stm32用hal库建立工程通用且方便,用的人也越来越多了,正点原子之前也有hal库的书还有例程,但是正点原子hal库的例程是以调用hal库的形式制作的,没有直接从cube的建立工程开始做起,并且在使用的过程中有根据项目更改过库函数。网上STM32Cube的教程也大多是v4、v5版本,和v6相比很多界面和功能有所变化,所以写了这个。文中部分内容参考正点原子开发指南和网上的文章教程。
工作环境:
STM32CubeMXv6
Keil5
如果仅仅使用GPIO口执行输入输出的操作,那么RCC时钟,晶振,时钟树和中断都是可以不用配置使用默认的,建立工程后左键点击需要打开的IO口后选择GPIO_OUTPUT或GPIO_INPUT。
然后打开左侧的下拉框System Core,点击GPIO选项;
点击需要配置的IO口,配置Configuration中的选项:
GPIO_OUTPUT选项
GPIO output level:GPIO初始输出电平
GPIO mode:GPIO模式(开漏输出或推挽输出)
GPIO Pull-up/Pull-down:GPIO上拉/下拉电阻
Maximum output speed:输出速率
User Label:用户命名(选填)
GPIO_INPUT选项
GPIO mode:GPIO模式
GPIO Pull-up/Pull-down:GPIO上拉/下拉电阻
User Label:用户命名(选填)
点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;
打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral;
最后点击右上角的GENERATE CODE按钮后生成代码。
生成代码后打开工程文件夹,用Keil5打开工程。
编译,运行
此时已经可以点亮小灯了。
HAL_GPIO_WritePin()函数可以控制IO空输出高电平
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); //PB0 输出低电平HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); //PB0 输出高电平 HAL_Delay()函数可以延时,单位ms
HAL_Delay(500); //延时500ms 通过在主函数的while循环内组合两者,连接小灯,可以达到小灯闪烁的结果
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); //PB0 输出低电平HAL_Delay(500); //延时500msHAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); //PB0 输出高电平HAL_Delay(500); //延时500ms 此外可以通过反转电平的方式达到相同效果
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); //PB0 反转输出HAL_Delay(500); //延时500ms HAL_GPIO_ReadPin()函数可以读取IO口电平以进行判断
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5) == RESET) //读取并判断PB5输入的电压是不是低电平
|