[STM32F4] 【STM32F446ZE】 工程建立第一步,FreeRTOS移植

[复制链接]
1840|1
 楼主| 湛只为无双 发表于 2016-4-9 10:55 | 显示全部楼层 |阅读模式
本帖最后由 湛只为无双 于 2016-4-9 11:09 编辑

想着用F446ZET6进行设计,第一步就想到了先把FreeRTOS给移植了,然后昨天花费了点时间,从以前的工程里面把文件拷贝过来,重新添加到刚开始建立的模板工程里。通过建立三个LED闪烁任务,还有一个串口发送任务,来进行任务的调度显示。
第一步还是先把工程文件打包上来:
STM32F446_FreeRTOS.zip (841.5 KB, 下载次数: 40)
在工程里面整体的架构很简单,主要就是启动文件,内核文件,官方的库文件,用户自己的文件以及FreeRTOS移植的文件。
2.png
关于底层驱动的问题在用户文件里面已经写好了,三个LED等,串口3的数据发送,剩下的最主要就是main.c了,完成主要函数的调用和编写。
  1. #include "main.h"
  2. #include "FreeRTOS.h"
  3. #include "task.h"

  4. void vREDTask( void *pvParameters );
  5. void vGRETask( void *pvParameters );
  6. void vBLUETask( void *pvParameters );
  7. void vUARTTask( void *pvParameters );
  8. int main(void)
  9. {
  10.         LED_Init();
  11.         USART3_Init();
  12.        
  13.         xTaskCreate( vREDTask, ( signed portCHAR * ) "RED", 512, NULL, tskIDLE_PRIORITY+8, NULL );
  14.         xTaskCreate( vGRETask, ( signed portCHAR * ) "GRE", 512, NULL, tskIDLE_PRIORITY+9, NULL );
  15.         xTaskCreate( vBLUETask,( signed portCHAR * ) "BLUE",512, NULL, tskIDLE_PRIORITY+10, NULL );
  16.         xTaskCreate( vUARTTask,( signed portCHAR * ) "UART",512, NULL, tskIDLE_PRIORITY+11, NULL );
  17.        
  18.         vTaskStartScheduler();
  19.        
  20.         while(1);
  21.        
  22. }

  23. void vREDTask( void *pvParameters )
  24. {
  25.         while(1)
  26.         {
  27.                 LED_RED^=1;
  28.                 vTaskDelay(100);
  29.         }
  30. }

  31. void vGRETask( void *pvParameters )
  32. {
  33.         while(1)
  34.         {
  35.                 LED_GRE^=1;
  36.                 vTaskDelay(200);
  37.         }
  38. }

  39. void vBLUETask( void *pvParameters )
  40. {
  41.         while(1)
  42.         {
  43.                 LED_BLUE^=1;
  44.                 vTaskDelay(400);
  45.         }
  46. }
  47. void vUARTTask( void *pvParameters )
  48. {
  49.         while(1)
  50.         {
  51.                 vTaskDelay(500);
  52.                 u3_printf("21ic 串口任务测试\r\n");
  53.         }
  54. }
在主函数里面建立的是三个LED闪烁任务和串口发送任务,三个闪烁任务的名字也分别对应了LED灯的颜色——RED、GRE、BLUE。
在建立的LED灯任务里面,具体操作涉及了不同的闪烁频率,分别是100ms、200ms、400ms的翻转间隔。
而串口任务里面,就是发送固定的字符串到电脑上,通过开发板自带的串口调试功能就可以完成数据的接收和发送。
最后就是结果的显示:
1.png
还有三个LED灯的闪烁:
IMG_20160408_203648.jpg
完成这一步的工作以后,剩下的就是建立不同的任务实现不同的功能了,也完成了系统设计的第一步。
最近在思考一个关于这个板子的设计方案,后面也会逐步完成相关的分享内容,敬请期待。。。。
 楼主| 湛只为无双 发表于 2016-4-9 11:10 | 显示全部楼层
沙发就自己占了,嘿嘿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

171

帖子

9

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