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学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第1张图片
打开STM32CubeMX 5.1.0


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第2张图片
输入或选择STM32芯片


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第3张图片
双击打开该芯片配置界面


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第4张图片
配置界面

2.配置系统调试端口,我用的是2线SW

选择好,就可以看到右侧SW调试口部分已经变绿色,代表配置成功

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第5张图片
STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第6张图片

3.配置时钟,外部8MHz晶振

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第7张图片


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第8张图片

4.配置FreeRTOS,参数如下图

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第9张图片
STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第10张图片

5.创建LED任务

在配置参数区,点击选择Tasks and Queues,双击默认任务,修改默认任务为LED任务,具体参数如下图LED任务1

我板子上有3个LED,还可以点击Add添加任务,如图共建立3个LED任务

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第11张图片

6.配置LED口

点击LED控制口引脚,选择GPIO_Output,引脚变绿,设置成功。在该引脚右键,选择Enter User Label,填写LED3

按此步骤配置另外2个LED控制端口,配置好,如图6-4所示。

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第12张图片
6-1


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第13张图片
6-2


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第14张图片
6-3


STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第15张图片
6-4

7.新建工程

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第16张图片

8.生成代码,代码生成需要时间,耐心等待

STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪_第17张图片

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(;;)里面添加灯闪和延时函数

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 */

}

你可能感兴趣的:(STM32CubeMX学习:(1)STM32CubeMX+FreeRTOS-----LED灯闪)