HAL库介绍
HAL(Hardware Abstraction Layer,硬件抽象层)库是由STMicroelectronics公司为其STM32系列微控制器提供的一组软件库。HAL库旨在简化开发人员对硬件的访问,使其不需要直接处理复杂的寄存器配置,而是通过一组高层次的API函数来进行硬件控制。这不仅提高了代码的可读性和可维护性,也增强了跨不同硬件平台的可移植性。
HAL库的主要特点
硬件独立性:通过抽象硬件细节,使应用程序代码可以更容易地移植到不同型号的STM32微控制器上。
模块化设计:每个外设都有单独的驱动程序,开发者可以按需选择和使用。
易于学习和使用:提供了一套统一的API接口,简化了硬件配置和操作。
丰富的文档和示例:ST官方提供了详尽的文档和大量示例代码,帮助开发者快速上手。
常用的HAL库组件
GPIO(通用输入输出):用于控制和读取微控制器的引脚状态。
USART(通用同步异步收发器):用于串行通信。
SPI(串行外设接口):用于高速数据传输。
I2C(集成电路间接口):常用于传感器数据收集。
ADC(模数转换器):将模拟信号转换为数字信号。
Timers(定时器):用于事件计时、脉宽调制等。
STM32CubeMX
STM32CubeMX是STMicroelectronics公司推出的一款软件工具,用于帮助开发人员快速配置和生成基于STM32微控制器的初始化代码。它能够简化硬件配置、引脚映射、时钟设置以及外设配置,大大提高了嵌入式软件开发的效率。
LED灯周期闪烁
点击Help,然后点击Manage embedded software packages:
选择上要安装的HAL库, 点击“Install” 直到安装成功:
回到STMCubeMX主界面,点击ACCESS TO MCU SELECTOR创建新项目:
在搜索栏输入STM32F103C8T6,然后点击信息栏中的芯片,点击start project:
点击system core,选择SYS,在debug下选择serial wire:
点击RCC,在DSE那里选为Crystal/Ceramic Resonator:
鼠标左击你需要的引脚,选择GPIO_Output,我选择了PC15和PA12:
点击ProjectManager,选择自己的安装路径和项目名,然后将IDE改为MDK-ARM,最后点击GENERTE CODE:
打开main.c文件,将以下代码放入主函数中:
SystemClock_Config();//系统时钟初始化
MX_GPIO_Init();//gpio初始化
while (1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);//PA4亮灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
HAL_Delay(1000);//延时1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);//PA4熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
HAL_Delay(1000);//延时1s
}
小结
在引脚设置是默认是低电平,我们也可以设置成高电平;如果不小心将其他引脚设置为Output,我们可以再左击一次取消选择。