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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

FreeRTOS stm32f103c8t6 keil工程源碼與開發手冊下載

  [復制鏈接]
跳轉到指定樓層
樓主
ID:186394 發表于 2018-9-6 11:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在STM32F103C8T6上移植FreeRTOSFreertos 移植到stm32F103ct6,參考的是《STM32F103 FreeRTOS開發手冊V1.1.pdf》第6章實驗2,實驗中會創建兩個應用任務task1_task和task2_task,當task1_task運行5次之后會刪除task2_task,同時實現LED閃爍功能。考慮到C8T6的存儲空間有限,未采用正點原子的FreeRTOSConfig.h文件!!

全部資料51hei下載地址:
FreeRTOS_ALL_6-2_180424-2115.rar (532.36 KB, 下載次數: 206)
STM32F103 FreeRTOS開發手冊V1.1.pdf.7z (10.68 MB, 下載次數: 188)

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "timer.h"
  6. #include "FreeRTOS.h"
  7. #include "task.h"


  8. /************************************************
  9. ************************************************/

  10. //空閑任務任務堆棧
  11. static StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];
  12. //空閑任務控制塊
  13. static StaticTask_t IdleTaskTCB;

  14. //定時器服務任務堆棧
  15. static StackType_t TimerTaskStack[configTIMER_TASK_STACK_DEPTH];
  16. //定時器服務任務控制塊
  17. static StaticTask_t TimerTaskTCB;

  18. //任務優先級
  19. #define START_TASK_PRIO                1
  20. //任務堆棧大小       
  21. #define START_STK_SIZE                 128  
  22. //任務堆棧
  23. StackType_t StartTaskStack[START_STK_SIZE];
  24. //任務控制塊
  25. StaticTask_t StartTaskTCB;
  26. //任務句柄
  27. TaskHandle_t StartTask_Handler;
  28. //任務函數
  29. void start_task(void *pvParameters);

  30. //任務優先級
  31. #define TASK1_TASK_PRIO                2
  32. //任務堆棧大小       
  33. #define TASK1_STK_SIZE                 128  
  34. //任務堆棧
  35. StackType_t Task1TaskStack[TASK1_STK_SIZE];
  36. //任務控制塊
  37. StaticTask_t Task1TaskTCB;
  38. //任務句柄
  39. TaskHandle_t Task1Task_Handler;
  40. //任務函數
  41. void task1_task(void *pvParameters);

  42. //任務優先級
  43. #define TASK2_TASK_PRIO                3
  44. //任務堆棧大小       
  45. #define TASK2_STK_SIZE                 128
  46. //任務堆棧
  47. StackType_t Task2TaskStack[TASK2_STK_SIZE];
  48. //任務控制塊
  49. StaticTask_t Task2TaskTCB;
  50. //任務句柄
  51. TaskHandle_t Task2Task_Handler;
  52. //任務函數
  53. void task2_task(void *pvParameters);


  54. //獲取空閑任務地任務堆棧和任務控制塊內存,因為本例程使用的
  55. //靜態內存,因此空閑任務的任務堆棧和任務控制塊的內存就應該
  56. //有用戶來提供,FreeRTOS提供了接口函數vApplicationGetIdleTaskMemory()
  57. //實現此函數即可。
  58. //ppxIdleTaskTCBBuffer:任務控制塊內存
  59. //ppxIdleTaskStackBuffer:任務堆棧內存
  60. //pulIdleTaskStackSize:任務堆棧大小
  61. void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,
  62.                                                                    StackType_t **ppxIdleTaskStackBuffer,
  63.                                                                    uint32_t *pulIdleTaskStackSize)
  64. {
  65.         *ppxIdleTaskTCBBuffer=&IdleTaskTCB;
  66.         *ppxIdleTaskStackBuffer=IdleTaskStack;
  67.         *pulIdleTaskStackSize=configMINIMAL_STACK_SIZE;
  68. }

  69. //獲取定時器服務任務的任務堆棧和任務控制塊內存
  70. //ppxTimerTaskTCBBuffer:任務控制塊內存
  71. //ppxTimerTaskStackBuffer:任務堆棧內存
  72. //pulTimerTaskStackSize:任務堆棧大小
  73. void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,
  74.                                                                         StackType_t **ppxTimerTaskStackBuffer,
  75.                                                                         uint32_t *pulTimerTaskStackSize)
  76. {
  77.         *ppxTimerTaskTCBBuffer=&TimerTaskTCB;
  78.         *ppxTimerTaskStackBuffer=TimerTaskStack;
  79.         *pulTimerTaskStackSize=configTIMER_TASK_STACK_DEPTH;
  80. }


  81. int main(void)
  82. {
  83.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設置系統中斷優先級分組4                  
  84.         delay_init();                                            //延時函數初始化          
  85.         uart_init(115200);                                        //初始化串口
  86.         LED_Init();                                                          //初始化LED
  87.        
  88.          
  89.     printf("\r\n\r\n");
  90.     printf("--------------------------------------------------------\r\n");
  91.     printf("-- Welcome to FreeRTOS                                  \r\n");
  92.     printf("--------------------------------------------------------\r\n");
  93.        
  94.     //創建開始任務
  95.         StartTask_Handler=xTaskCreateStatic((TaskFunction_t        )start_task,                //任務函數
  96.                                                                                 (const char*         )"start_task",                //任務名稱
  97.                                                                                 (uint32_t                 )START_STK_SIZE,        //任務堆棧大小
  98.                                                                                 (void*                           )NULL,                                //傳遞給任務函數的參數
  99.                                                                                 (UBaseType_t         )START_TASK_PRIO,         //任務優先級
  100.                                                                                 (StackType_t*   )StartTaskStack,        //任務堆棧
  101.                                                                                 (StaticTask_t*  )&StartTaskTCB);        //任務控制塊              
  102.     vTaskStartScheduler();          //開啟任務調度
  103. }

  104. //開始任務任務函數
  105. void start_task(void *pvParameters)
  106. {
  107.     taskENTER_CRITICAL();           //進入臨界區
  108.     //創建TASK1任務
  109.         Task1Task_Handler=xTaskCreateStatic((TaskFunction_t        )task1_task,               
  110.                                                                                 (const char*         )"task1_task",               
  111.                                                                                 (uint32_t                 )TASK1_STK_SIZE,       
  112.                                                                                 (void*                           )NULL,                               
  113.                                                                                 (UBaseType_t         )TASK1_TASK_PRIO,        
  114.                                                                                 (StackType_t*   )Task1TaskStack,       
  115.                                                                                 (StaticTask_t*  )&Task1TaskTCB);       
  116.     //創建TASK2任務
  117.         Task2Task_Handler=xTaskCreateStatic((TaskFunction_t        )task2_task,               
  118.                                                                                 (const char*         )"task2_task",               
  119.                                                                                 (uint32_t                 )TASK2_STK_SIZE,       
  120.                                                                                 (void*                           )NULL,                               
  121.                                                                                 (UBaseType_t         )TASK2_TASK_PRIO,        
  122.                                                                                 (StackType_t*   )Task2TaskStack,       
  123.                                                                                 (StaticTask_t*  )&Task2TaskTCB);
  124.     vTaskDelete(StartTask_Handler); //刪除開始任務
  125.     taskEXIT_CRITICAL();            //退出臨界區
  126. }
  127. //task1任務函數
  128. void task1_task(void *pvParameters)
  129. {
  130.         u8 task1_num=0;
  131.        
  132.         while(1)
  133.         {
  134.                 task1_num++;        //任務執1行次數加1 注意task1_num1加到255的時候會清零!!
  135.                 LED0=!LED0;
  136.                 printf("任務1已經執行:%d次\r\n",task1_num);
  137.                 if(task1_num==5)
  138.                 {
  139.                         if(Task2Task_Handler != NULL)                //任務2是否存在?       
  140.                         {
  141.                                 vTaskDelete(Task2Task_Handler);        //任務1執行5次刪除任務2
  142.                                 Task2Task_Handler=NULL;                        //任務句柄清零
  143.                                 printf("任務1刪除了任務2!\r\n");
  144.                         }
  145.                 }
  146.                 vTaskDelay(1000);                           //延時1s,也就是1000個時鐘節拍       
  147.         }
  148. }

  149. //task2任務函數
  150. void task2_task(void *pvParameters)
  151. {
  152.         u8 task2_num=0;
  153.        
  154.         while(1)
  155.         {
  156.                 task2_num++;        //任務2執行次數加1 注意task1_num2加到255的時候會清零!!
  157.     LED1=!LED1;
  158.                 printf("任務2已經執行:%d次\r\n",task2_num);
  159.                 vTaskDelay(1000);                           //延時1s,也就是1000個時鐘節拍       
  160.         }
  161. }
復制代碼




評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2018-9-12 05:08 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:75685 發表于 2018-12-1 15:04 | 只看該作者
不錯的資料,謝謝分享
回復

使用道具 舉報

地板
ID:280272 發表于 2018-12-24 16:46 | 只看該作者

不錯的資料,謝謝分享
回復

使用道具 舉報

5#
ID:171213 發表于 2019-1-11 10:07 | 只看該作者
stm32f103c8t6 的RAM比較小,看看堆定義多大。謝謝分享。
回復

使用道具 舉報

6#
ID:333026 發表于 2019-2-18 10:52 | 只看該作者
報了很多警告,還在處理中
回復

使用道具 舉報

7#
ID:333026 發表于 2019-2-22 08:31 | 只看該作者
我已經移植好一個全功能的freeRTOS了
回復

使用道具 舉報

8#
ID:478898 發表于 2019-2-23 00:02 | 只看該作者
嗯,這貼子網站跟codeforge.cn 有相似之處! 不錯
回復

使用道具 舉報

9#
ID:229982 發表于 2019-3-28 15:55 | 只看該作者

不錯的資料,謝謝分享
回復

使用道具 舉報

10#
ID:164327 發表于 2019-6-24 12:26 | 只看該作者
謝謝,很好用
回復

使用道具 舉報

11#
ID:251082 發表于 2019-8-8 16:49 | 只看該作者
這個pdf文件不能復制的
回復

使用道具 舉報

12#
ID:78947 發表于 2019-9-7 09:33 | 只看該作者
謝謝分享
回復

使用道具 舉報

13#
ID:754714 發表于 2020-5-18 14:58 | 只看該作者
先收藏了,謝謝分享
回復

使用道具 舉報

14#
ID:378085 發表于 2020-5-18 18:16 | 只看該作者
感謝大佬  正好要學一下操作系統
回復

使用道具 舉報

15#
ID:292427 發表于 2020-12-16 20:41 | 只看該作者
工程好多警告
回復

使用道具 舉報

16#
ID:205874 發表于 2021-6-1 00:05 | 只看該作者
不錯,直接編譯稍微修改運行在了其他開發板子上。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美综合一区二区三区 | 国产高清一区二区三区 | 99热精品久久 | 欧美另类视频 | 日韩高清中文字幕 | 国产成人精品a视频一区www | 在线免费观看日本视频 | 国产9 9在线 | 中文 | 亚洲国产精品久久久久 | 一区二区在线 | 国产精品视频免费观看 | 欧美中文在线 | 日日天天 | 在线三级电影 | 久久精品国产免费高清 | 日韩天堂av | 搞黄网站在线观看 | 日韩在线欧美 | 老熟女毛片 | 中文字幕一区二区三区日韩精品 | 久草在线 | 香蕉91| 亚洲福利 | 一区精品国产欧美在线 | 欧美一级欧美一级在线播放 | 久久噜| 久久中文网 | 伦理片97 | 精品毛片 | 成人欧美一区二区 | 视频在线一区二区 | 欧美一级久久 | 久草在线 | 91久久综合 | 午夜三级网站 | 91高清视频在线 | 国产精品美女久久久久久不卡 | 国产欧美日韩在线播放 | 国产一区二区精品在线 | 99在线免费观看视频 | 伊人超碰在线 |