HAL库(硬件抽象层库)是一个提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,而不必关心底层硬件的具体实现细节。HAL库通常由硬件厂商提供,用于支持其硬件设备,并为其提供标准化的接口。
HAL库的主要目的是简化底层硬件的操作,使得开发者可以更加专注于实现其应用程序的逻辑,而不是花费大量时间在硬件操作上。通过使用HAL库,开发者可以使用一些简单的函数和API来控制硬件,而不需要了解底层硬件的具体工作原理和实现细节。
HAL库通常包括一些常用的硬件操作函数和数据结构,例如GPIO(通用输入输出)操作、SPI通信、I2C通信、PWM(脉冲宽度调制)等。开发者可以使用这些函数和数据结构来操作硬件,实现其所需的功能。
总之,HAL库是一种提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,简化开发过程,提高开发效率。
为了限制我使用hal库,我决定使用stm32f7xx系列芯片,这款芯片或是因为太新或是因为hal库本身具有的便捷性和芯片本身的高速性,只能使用hal库,可以参考STM32【H7】理论——综述、HAL库简述_stm32h7开发指南-hal库-CSDN博客
但其实所有的芯片都一个样,只是在选择的时候注意一下就行?
? ? ? ? ? ? ? ? 参考STM32CubMX的详细安装方法_stm32cubemx安装-CSDN博客
? ? ? ? ? ? ? ? 参考keil5安装教程-CSDN博客
点击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
好了,我们的灯就亮了,欢迎入坑单片机,记得点赞加收藏,创作不易