目录
一、STM32中HAL库函数开发方法
基于HAL库的开发方式,其实质是仍然是通过操作底层寄存器来实现相应功能,只是将寄存器操作进行了封装,以函数形式提供给开发人员使用。
HAL库开发模式需要用到两个软件:STM32CubeMX用于外设功能模块的参数配置、生成相应编译器的工程代码;编译器用于应用程序的开发。
HAL库的接口函数
类型 | 函数原型 | 功能描述 |
---|---|---|
初始化及复位函数 | HAL_GPIO_Init() | GPIO**初始化函数** |
HAL_GPIO_DeInit**()** | 复位选定的端口引脚到初始状态 | |
引脚功能**操作函数** | HAL_GPIO_ReadPin**()** | 读取选定的端口引脚的电平状态 |
HAL_GPIO_WritePin**()** | 设置选定的端口引脚输出高电平或低电平 | |
HAL_GPIO_TogglePin() | 设置选定端口引脚的电平状态翻转 | |
HAL_GPIO_LockPin() | 当端口引脚电平状态改变时保持锁定时的值 | |
HAL_GPIO_EXTI_IRQHandler() | 外部中断处理函数 | |
HAL_GPIO_EXTI_Callback() | 中断回调函数 |
二、STM32CubeMX的安装
点击Next,同意协议后点击Next,然后选择对应安装位置。
若遇到下图情况直接点击确定。
安装成功后打开STM32Cube进行固件库安装
选择对应的固件库进行安装
三、STM32Cube完成两个LED灯闪烁
1.新建项目
2.配置项目
进行输出端口设置,选择PA3,PA4为GPIO_Output;
配置SYS:
配置RCC:
配置GPIO:
设置为High
时钟配置:
项目建立:
3.Keil函数修改
在main.c文件中给while循环添加如下代码
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_Delay(1000); // ??1s
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
stlink链接过后先编译程序再进行烧录
4.实验结果
线路连接:
实验效果:
四、采用中断模式控制LED灯点亮
1.配置项目
配置SYS:
配置RCC:
配置GPIO:
2.Keil函数修改
在mian.c中添加以下代码
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if( GPIO_Pin == B1_EXTI_Pin )
{
HAL_GPIO_TogglePin(LD5_GPIO_Port, LD5_Pin);
}
}
注:B1_EXTI指PB15;LED5指PA5