[STM32F4] 【NUCLEO-F446ZE】CubeMX下使用RTOS

[复制链接]
1456|0
 楼主| Ketose 发表于 2016-4-13 00:13 | 显示全部楼层 |阅读模式
CubeMX真是个好东西,使用Cube你的工作量就只有一点点,今天我们使用CubeMX来生成一个带RTOS的3个LED流水灯。废话不多说了。
原理图:
QQ图片20160412235534.png
原理图上没有标出LD1,其实LD1是接在PB0上的。
首先是用CubeMX配置时钟如下:
111.png
配置PB0,PB7,PB14为GPIO_Output
2.png
使能FREERTOS,并添加一个任务:
3.png
在配置FREERTOS的Timebase Source时CubeMX强烈建议我们使用定时器,而不使用SysTick,这点有点弄不明白,因为现在绝大多数的RTOS系统时基都是使用SysTick,CubeMX竟然冒天下之大不韪让我们使用Timer来做系统时基,不知用意为何,难道是HAL的底层驱动里也使用到了SysTick?这个问题我没有深究了,希望高人给予指点。
一切配置好之后,生成MDK-ARM V5的项目,打开该项目添加任务代码:
  1. /* StartLedTask function */
  2. void StartLedTask(void const * argument)
  3. {
  4.     /* USER CODE BEGIN StartLedTask */
  5.     /* Infinite loop */
  6.     for(;;)
  7.     {
  8.         HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
  9.         osDelay(500);
  10.         HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
  11.         osDelay(500);
  12.         HAL_GPIO_TogglePin(LD3_GPIO_Port,LD3_Pin);
  13.         osDelay(500);
  14.     }
  15.     /* USER CODE END StartLedTask */
  16. }
别忘了添加头文件 #include "gpio.h"

大功告成,编译,下载。。。。。。。。。你应该可以看到流水灯了吧!


您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我最讨厌两种人:一是有种族歧视的; 二是黑人;三是不识数的!

66

主题

3267

帖子

15

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