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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5719|回復: 2
打印 上一主題 下一主題
收起左側

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下載地址:

FreeRTOS_IMCharger_MDK.rar

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

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:272602 發表于 2019-6-29 05:32 | 只看該作者
從這兩天應用的來看,對于4K小容量RAM的單片機移植了FreeRTOS,只能做一些任務量不大的項目,任務量太大 就必須要RAM比較大的單片機  這是這兩天調試的心得
回復

使用道具 舉報

板凳
ID:185611 發表于 2020-4-29 08:24 | 只看該作者
也想移植到051單片機里
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合久久综合久久 | 中文字幕伊人 | 波多野吉衣久久 | 国产精品96久久久久久 | 偷牌自拍 | 国产成人精品久久二区二区91 | 免费观看av网站 | 精品久久久久久久人人人人传媒 | 国产精品久久久久久吹潮 | 午夜精品一区二区三区在线观看 | 在线免费亚洲视频 | 午夜久久久久 | 欧美寡妇偷汉性猛交 | 日韩三级电影在线看 | 亚洲免费视频一区 | 欧美日韩综合一区 | 毛片在线免费 | 国产男女视频 | 一级做a爰片性色毛片视频停止 | 亚洲综合大片69999 | 我爱操 | av黄色免费在线观看 | 男女视频在线观看 | 中文字字幕一区二区三区四区五区 | 色欧美片视频在线观看 | 中文字幕一区二区三区在线观看 | 色婷婷激情 | 一区二区不卡 | 久久精品国内 | 欧美一级二级在线观看 | 国产一区二区久久久 | 午夜精品一区二区三区在线观看 | 一二区成人影院电影网 | 四虎影院一区二区 | 亚洲网址 | 69电影网| 自拍偷拍第一页 | 国产日韩一区二区 | 亚洲国产乱码 | 国产成人精品亚洲日本在线观看 | 皇色视频在线 |