cubmx基础操作,hal库基本配置流程之使用 stm32cubmx生成HAL库进行gpio点亮led(stm32h7xx)(超详细,小白教程)

一.HAL库简介

HAL库(硬件抽象层库)是一个提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,而不必关心底层硬件的具体实现细节。HAL库通常由硬件厂商提供,用于支持其硬件设备,并为其提供标准化的接口。

HAL库的主要目的是简化底层硬件的操作,使得开发者可以更加专注于实现其应用程序的逻辑,而不是花费大量时间在硬件操作上。通过使用HAL库,开发者可以使用一些简单的函数和API来控制硬件,而不需要了解底层硬件的具体工作原理和实现细节。

HAL库通常包括一些常用的硬件操作函数和数据结构,例如GPIO(通用输入输出)操作、SPI通信、I2C通信、PWM(脉冲宽度调制)等。开发者可以使用这些函数和数据结构来操作硬件,实现其所需的功能。

总之,HAL库是一种提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,简化开发过程,提高开发效率。

二.芯片介绍

为了限制我使用hal库,我决定使用stm32f7xx系列芯片,这款芯片或是因为太新或是因为hal库本身具有的便捷性和芯片本身的高速性,只能使用hal库,可以参考STM32【H7】理论——综述、HAL库简述_stm32h7开发指南-hal库-CSDN博客

但其实所有的芯片都一个样,只是在选择的时候注意一下就行 

三.软件准备

        1.stm32cubmx安装

                参考STM32CubMX的详细安装方法_stm32cubemx安装-CSDN博客

        2.keil5安装

                参考keil5安装教程-CSDN博客

四.基础操作——点亮led

        1.cubmx生成初始代码

点击new project进行配置

                

 选择我们的芯片

 选择要点灯的引脚,点击选择gpio_Output模式(这里我PA12离得近,就用PA12,可以任意按需求选择)

 点击边上的system core,下面有个gpio,点他,对我们的gpio,选择引脚进行配置

 接下来就可以进行配置了

 第一项output level表示的是你要输出低电平还是高电平,如果高电平对应到hal里面就是

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12, GPIO_PIN_SET);

低电平就是

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12, GPIO_PIN_RESET);

我们要接到led的正极,所以输出高电平点亮

第二行表示的是你要输出的模式,开漏输出(OD)还是推挽输出(PP),参考推挽输出、开漏输出和悬空输入等_开漏默认电平是啥-CSDN博客

总结就是尽量用PP ,当然考虑到功耗、引脚特殊情况可以用OD

下一行是上拉还是下拉还是不拉电阻,在推挽模式下都一样,所以选择no pull_up and no pull_down

下一行是输出速度,考虑本身使用情况,一般都够用,考虑功耗、延迟等因素选择,这里low就够用

最后一行是加标签,我们写上LED,这样在图上就可以看到

配置如下

 点击上面的project manager,进行文件配置

输入2.文件名 3.保存地址 4.编译器 5.版本 6.创建文件

这样我们的 代码就好了,可以选择打开文件夹还是直接打开keil,我们直接打开project

打开左边一排的main.c,不管上面一大堆代码,往下翻找到static void MX_GPIO_Init(void)配置,这样就看到了我们的代码

 往上翻,找到int函数,我们可以在有这种注释的中间写代码,这样后来再用cubmx改的时候就不会把我们写的代码刷新掉,在while()里面写表示循环执行,在while()外面写表示执行一次

 while里加入代码

  while (1)
  {
    /* USER CODE END WHILE */
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_12);
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }

TogglePin表示反转输出,原本低电平变高电平,原本高电平变低电平

delay表示延时,这里延时500ms

用stlink连接我们的单片机,接上led(长脚为正短脚为负)

按f7编译或者左上角的按钮,然后load

好了,我们的灯就亮了,欢迎入坑单片机,记得点赞加收藏,创作不易

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是使用HAL库配置RTC的步骤: 1. 首先,需要在CubeMX中启用RTC时钟,并且将相应引脚分配给RTC。这可以通过打开“Clock Configuration”选项卡,在“Peripherals”下找到“RTC”并启用它来实现。然后,在“Pinout & Configuration”选项卡中找到“RTC”引脚并将其分配给正确的引脚。 2. 在代码中包含“stm32h7xx_hal.h”和“stm32h7xx_hal_rtc.h”头文件。 3. 初始化RTC时钟。可以使用以下代码: RCC_OscInitTypeDef RCC_OscInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; /* Configure LSE as RTC clock source */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /* Enable RTC clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } 4. 初始化RTC。可以使用以下代码: RTC_HandleTypeDef hrtc; /* Initialize RTC */ hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if (HAL_RTC_Init(&hrtc) != HAL_OK) { Error_Handler(); } 5. 设置RTC时间。可以使用以下代码: RTC_TimeTypeDef sTime; /* Set the time to 00:00:00 */ sTime.Hours = 0; sTime.Minutes = 0; sTime.Seconds = 0; if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) { Error_Handler(); } 6. 设置RTC日期。可以使用以下代码: RTC_DateTypeDef sDate; /* Set the date to January 1, 2020 */ sDate.Date = 1; sDate.Month = RTC_MONTH_JANUARY; sDate.Year = 20; sDate.WeekDay = RTC_WEEKDAY_WEDNESDAY; if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK) { Error_Handler(); } 7. 最后,启用RTC。可以使用以下代码: /* Enable RTC */ if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 1, RTC_WAKEUPCLOCK_RTCCLK_DIV16) != HAL_OK) { Error_Handler(); } 这些是使用HAL库配置RTC的基本步骤。根据您的需求,您可以使用更多的RTC功能来实现您的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔过了头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值