[应用相关] 通过STM32cube移植FreeRTOS

[复制链接]
1301|1
 楼主| tpgf 发表于 2024-6-15 14:29 | 显示全部楼层 |阅读模式
1.在cube中配置时钟

18340666d34af2e47c.png

此处说明一下,因为FreeRTOS会占用系统时钟,所以我们需要重新选一个时钟源,而笔者用的是STM32F407,tim6是基础时钟,优点是节省资源且配置简单。小伙伴们在这可自行定义其他的定时器。

2.时钟树的配置

78580666d34a7c7b68.png

注意一下红色框中的选项,其他的就没什么了。

3.FreeRTOS配置

16962666d349fcd154.png

勾选FreeRTOS,进行任务点灯任务创建。然后根据原理图对控制LED灯引脚进行初始化,此处省略。

4.生成代码

90063666d349809357.png

已经有很多大神在此处为大家讲解了,小的就在此处省略了。

5.keil设置

41885666d3490e9c27.png

82654666d34664ff56.png

6.代码修改
可在main.c最开始的地方对灯进行一个初始化状态。

HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);//初始化灯状态
1
然后找到MX_FREERTOS_Init()函数,我们进入这个函数,找到刚才我们创建的void vLEDTask(void *argument) 点灯任务函数,在这个函数中,我们对灯进行反转操作。
freertos.c

void vLEDTask(void *argument)
{
  /* USER CODE BEGIN vLEDTask */
  /* Infinite loop */
  for(;;)
  {
    HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
    osDelay(500);
  }
  /* USER CODE END vLEDTask */
}
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/gu411/article/details/139657635

而服务器人 发表于 2024-7-26 15:12 | 显示全部楼层
在main.c最开始的地方对灯进行一个初始化状态。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2384

主题

17635

帖子

21

粉丝
快速回复 在线客服 返回列表 返回顶部