久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: stm32f031單片機完美移植freertos操作系統 附源程序 [打印本頁]

作者: thinkingpadcui    時間: 2019-6-27 12:15
標題: stm32f031單片機完美移植freertos操作系統 附源程序
本帖最后由 thinkingpadcui 于 2019-6-28 16:25 編輯

stm32031c6t6是一款小容量的,少資源的M0內核單片機,4K RAM ,32K flash。
搞了兩天終于把freeRTOSTA操作系統完美移植到該單片機上面。
目前測試點燈和NRF24L01發送接收數據都是OK。
UARST打印printf目前沒有測試成功 ,該單片機只有一個USART.這個是個小問題。后面解決了給大家分享一下。
僅供參考,希望能幫到正在學習os的朋友



單片機源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "include.h"

  3. //任務優先級
  4. #define START_TASK_PRIO                1
  5. //任務堆棧大小        
  6. #define START_STK_SIZE                 50  
  7. //任務句柄
  8. TaskHandle_t StartTask_Handler;
  9. //任務函數
  10. void start_task(void *pvParameters);

  11. //任務優先級
  12. #define LED0_TASK_PRIO                2
  13. //任務堆棧大小        
  14. #define LED0_STK_SIZE                 50  
  15. //任務句柄
  16. TaskHandle_t LED0Task_Handler;
  17. //任務函數
  18. void led0_task(void *pvParameters);

  19. //任務優先級
  20. #define LED1_TASK_PRIO                3
  21. //任務堆棧大小        
  22. #define LED1_STK_SIZE                 50  
  23. //任務句柄
  24. TaskHandle_t LED1Task_Handler;
  25. //任務函數
  26. void led1_task(void *pvParameters);

  27. ////任務優先級
  28. //#define FLOAT_TASK_PRIO                4
  29. ////任務堆棧大小        
  30. //#define FLOAT_STK_SIZE                 128
  31. ////任務句柄
  32. //TaskHandle_t FLOATTask_Handler;
  33. ////任務函數
  34. //void float_task(void *pvParameters);

  35. int main(void)
  36. {        
  37.         MCU_Init();
  38. //        NRF24L01_Init();
  39.                 delay_init();                                            //延時函數初始化         
  40. //        uart_init(115200);                                        //初始化串口
  41.         NRF24L01_Init();

  42.         //創建開始任務
  43.     xTaskCreate((TaskFunction_t )start_task,            //任務函數
  44.                 (const char*    )"start_task",          //任務名稱
  45.                 (uint16_t       )START_STK_SIZE,        //任務堆棧大小
  46.                 (void*          )NULL,                  //傳遞給任務函數的參數
  47.                 (UBaseType_t    )START_TASK_PRIO,       //任務優先級
  48.                 (TaskHandle_t*  )&StartTask_Handler);   //任務句柄              
  49.     vTaskStartScheduler();          //開啟任務調度
  50. }

  51. //開始任務任務函數
  52. void start_task(void *pvParameters)
  53. {
  54.    // taskENTER_CRITICAL();           //進入臨界區
  55.     //創建LED0任務
  56.     xTaskCreate((TaskFunction_t )led0_task,            
  57.                 (const char*    )"led0_task",           
  58.                 (uint16_t       )LED0_STK_SIZE,
  59.                 (void*          )NULL,                                
  60.                 (UBaseType_t    )LED0_TASK_PRIO,        
  61.                 (TaskHandle_t*  )&LED0Task_Handler);   
  62.     //創建LED1任務
  63.     xTaskCreate((TaskFunction_t )led1_task,     
  64.                 (const char*    )"led1_task",   
  65.                 (uint16_t       )LED1_STK_SIZE,
  66.                 (void*          )NULL,
  67.                 (UBaseType_t    )LED1_TASK_PRIO,
  68.                 (TaskHandle_t*  )&LED1Task_Handler);
  69.     //浮點測試任務
  70. //    xTaskCreate((TaskFunction_t )float_task,     
  71. //                (const char*    )"float_task",   
  72. //                (uint16_t       )FLOAT_STK_SIZE,
  73. //                (void*          )NULL,
  74. //                (UBaseType_t    )FLOAT_TASK_PRIO,
  75. //                (TaskHandle_t*  )&FLOATTask_Handler);                                                                 
  76.     vTaskDelete(StartTask_Handler); //刪除開始任務
  77.     //taskEXIT_CRITICAL();            //退出臨界區
  78. }

  79. //LED0任務函數
  80. void led0_task(void *pvParameters)
  81. {
  82.     while(1)
  83.     {
  84.                         test_RX_TX();
  85. //        LED1_ON;
  86. //        vTaskDelay(500);
  87. //                                LED1_OFF;
  88.         vTaskDelay(1000);
  89.     }
  90. }   

  91. //LED1任務函數
  92. void led1_task(void *pvParameters)
  93. {
  94.     while(1)
  95.     {
  96.         LED3_ON;
  97.         vTaskDelay(800);
  98.                                 LED3_OFF;
  99.         vTaskDelay(800);
  100.     }
  101. }
  102. //浮點測試任務
  103. //void float_task(void *pvParameters)
  104. //{
  105. //        static float float_num=0.00;
  106. //        while(1)
  107. //        {
  108. //                float_num+=0.01f;
  109. //                printf("float_num的值為: %.4f\r\n",float_num);
  110. //        vTaskDelay(1000);
  111. //        }
  112. //}
復制代碼

全部資料51hei下載地址:
[attach]191388[/attach]

FreeRTOS_IMCharger_MDK.rar

3.81 MB, 下載次數: 136, 下載積分: 黑幣 -5


作者: thinkingpadcui    時間: 2019-6-29 05:32
從這兩天應用的來看,對于4K小容量RAM的單片機移植了FreeRTOS,只能做一些任務量不大的項目,任務量太大 就必須要RAM比較大的單片機  這是這兩天調試的心得
作者: kinto    時間: 2020-4-29 08:24
也想移植到051單片機里




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久国产精品免费一区二区三区 | 中文字幕一区二区三区精彩视频 | 欧美亚洲国产成人 | 午夜男人天堂 | 国产精品视频在线免费观看 | 国产一区二区三区视频 | 五月天婷婷丁香 | 欧美一区不卡 | 在线中文字幕视频 | 五月婷婷中文 | 久久久噜噜噜久久中文字幕色伊伊 | 久久久免费电影 | 免费大黄视频 | 亚洲欧美日韩电影 | 国产97碰免费视频 | 日韩高清一区 | 伊人网一区 | 久久久久久国模大尺度人体 | 男女久久久| av网站在线播放 | 免费黄色大片 | 国产精品一区二区在线免费观看 | 日韩欧美国产一区二区 | 一区二区三区四区免费视频 | 成人中文字幕在线观看 | 国产在线高清 | 伊人免费网 | 欧美xxxx色视频在线观看免费 | 天天影视网天天综合色在线播放 | 综合久久综合久久 | 国产探花在线精品一区二区 | 久久久久中文字幕 | 人人澡人人射 | 国产一级毛片精品完整视频版 | 亚洲一区网站 | 国产精品久久久久久 | 久久国产精品久久久久久 | 网站一区二区三区 | 一级片av | 久久综合狠狠综合久久综合88 | 黄网站涩免费蜜桃网站 |