STM32CubeMX学习((1)STM32CubeMX+FreeRTOS-----LED灯闪)
测试STM32CubeMX+FreeRTOS实现LED灯闪
这是第一篇,所以配置写的比较多,主要是为了防止自己过一段时间后又忘了,详细记录一下。仅供参考。
试验工具:
1.STM32CubeMX 5.1.0
2.keil uVision4
3.STM32F405RGT6板子(只引出来串口1.2、3个LED、SWD仿真调试口)
4.JLINK下载工具
配置步骤:
1.打开STM32CubeMX 5.1.0,选择你用的STM32芯片
2.配置系统调试端口,我用的是2线SW
3.配置时钟,外部8MHz晶振
4.配置FreeRTOS,参数如下图
5.创建LED任务
6.配置LED口
7.新建工程
8.生成代码,代码生成需要时间,耐心等待
9.程序修改测试
STM32CubeMX 5.1.0配置步骤
1.打开STM32CubeMX 5.1.0,选择你用的STM32芯片
文章图片
打开STM32CubeMX 5.1.0
文章图片
输入或选择STM32芯片
文章图片
双击打开该芯片配置界面
文章图片
配置界面 2.配置系统调试端口,我用的是2线SW
选择好,就可以看到右侧SW调试口部分已经变绿色,代表配置成功
文章图片
文章图片
3.配置时钟,外部8MHz晶振
文章图片
文章图片
4.配置FreeRTOS,参数如下图
文章图片
文章图片
5.创建LED任务
在配置参数区,点击选择Tasks and Queues,双击默认任务,修改默认任务为LED任务,具体参数如下图LED任务1
我板子上有3个LED,还可以点击Add添加任务,如图共建立3个LED任务
文章图片
6.配置LED口
点击LED控制口引脚,选择GPIO_Output,引脚变绿,设置成功。在该引脚右键,选择Enter User Label,填写LED3
按此步骤配置另外2个LED控制端口,配置好,如图6-4所示。
文章图片
6-1
文章图片
6-2
文章图片
6-3
文章图片
6-4 7.新建工程
文章图片
8.生成代码,代码生成需要时间,耐心等待
文章图片
9.程序修改测试
打开工程,编译,没问题,option----debug-----use:J-LINK/-Trace Cortex-----settings-----
-----------------------------------------------------Flash Download---add---STM32F4XX Flash-----
-----------------------------------------------------debug----ort:SW------确定----OK
打开程序freertos.c文件,可以看到初始化MX_FREERTOS_Init里面,程序已经自动创建任务LED3Task,我们找到启动任务StartLED3Task
void StartLED3Task(void const * argument)
在for(;
;
)里面添加灯闪和延时函数
HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);
osDelay(1000);
依次在void StartLED4Task(void const * argument)的for(;
;
)里面添加灯闪和延时函数
【STM32CubeMX学习((1)STM32CubeMX+FreeRTOS-----LED灯闪)】HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);
osDelay(1000);
在void StartLED5Task(void const * argument)
在for(;
;
)里面添加灯闪和延时函数
HAL_GPIO_TogglePin(LED5_GPIO_Port,LED5_Pin);
osDelay(1000);
连接仿真器,烧录程序,可以看到三个灯以相同的频率在闪灭,至此已完成试验。可以试着改变延时时间,是三个灯延时不同,看看灯闪效果。
启动任务灯闪程序如下,作为参考:
void StartLED4Task(void const * argument)
{
/* USER CODE BEGIN StartLED4Task */
/* Infinite loop */
for(;
;
)
{
HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);
osDelay(1000);
}
/* USER CODE END StartLED4Task */
}
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》