標(biāo)題: 簡(jiǎn)單易用的STM32跑的OS FSC 附源程序 [打印本頁(yè)]

作者: 李牧林    時(shí)間: 2019-9-14 10:58
標(biāo)題: 簡(jiǎn)單易用的STM32跑的OS FSC 附源程序
這個(gè)OS簡(jiǎn)單易用,按照手冊(cè)移植,10分鐘搞定,保證1個(gè)小時(shí)內(nèi)熟練上手。應(yīng)該比RTX ,FreeRTOS,RTT等容易上手噢。

下載下來(lái)的資料就兩個(gè)文件夾和兩個(gè)txt文檔。
第一個(gè)文件夾打開(kāi),就是核心C文件了,一共4個(gè)文件,簡(jiǎn)潔明了。

當(dāng)然,沒(méi)有手冊(cè)是不好使的,在說(shuō)明這個(gè)文件夾里有詳細(xì)的移植手冊(cè),跟著做下來(lái)就幾分鐘的事。



單片機(jī)源程序如下:
  1. /*FSC_STOS_V4.9*/
  2. #include "fsc_stos.h"  //使用多任務(wù)內(nèi)核


  3. /* 任務(wù)名稱(chēng)任意,此處為方便直觀取名Task1-5                        */
  4. /******************************創(chuàng)建任務(wù)參數(shù)*************************/
  5. void Task1(void); //任務(wù)1聲明
  6. void Task2(void); //任務(wù)2聲明
  7. void Task3(void); //任務(wù)3聲明
  8. void Task4(void); //任務(wù)4聲明
  9. void Task5(void); //任務(wù)5聲明

  10. //靜態(tài)建創(chuàng)任務(wù)所需要的棧內(nèi)存
  11. //#define Task1_StkSize 128  //任務(wù)1堆棧大小
  12. //#define Task2_StkSize 128  //任務(wù)2堆棧大小
  13. //#define Task3_StkSize 128  //任務(wù)3堆棧大小
  14. //#define Task4_StkSize 128  //任務(wù)4堆棧大小
  15. //#define Task5_StkSize 128  //任務(wù)5堆棧大小

  16. //OSSTK Task1_Stk[Task1_StkSize]; //任務(wù)1堆棧
  17. //OSSTK Task2_Stk[Task2_StkSize]; //任務(wù)2堆棧
  18. //OSSTK Task3_Stk[Task3_StkSize]; //任務(wù)3堆棧
  19. //OSSTK Task4_Stk[Task4_StkSize]; //任務(wù)4堆棧
  20. //OSSTK Task5_Stk[Task5_StkSize]; //任務(wù)5堆棧
  21. //靜態(tài)建創(chuàng)任務(wù)所需要的棧內(nèi)存

  22. void OS_MAIN(void)
  23. {
  24.          /*-------------------全局變量及宏定義區(qū)------------------------*/



  25.    /*-------------------------------------------------------------*/
  26.          /************************************************************************************/        
  27.          OSInit(); //系統(tǒng)初使化
  28.          /********************************在系統(tǒng)中創(chuàng)建任務(wù)***********************************/
  29.          //任務(wù)優(yōu)先級(jí)(越大越高,范圍:0-OS_MAX_TASKS-1)
  30.         
  31.          //靜態(tài)創(chuàng)建(需要用戶提供內(nèi)存空間)
  32.          /*                  任務(wù)名  任務(wù)函數(shù)名   棧地址     棧大小      時(shí)間片  優(yōu)先級(jí)     任務(wù)狀態(tài)*/
  33. //         OSTaskCreateStatic("Task1", Task1,  Task1_Stk, Task1_StkSize, 1,     1,     TASK_RUNNING); //OS創(chuàng)建任務(wù)1
  34. //         OSTaskCreateStatic("Task2", Task2,  Task2_Stk, Task2_StkSize, 1,     2,     TASK_RUNNING); //OS創(chuàng)建任務(wù)2
  35. //         OSTaskCreateStatic("Task3", Task3,  Task3_Stk, Task3_StkSize, 1,     5,     TASK_RUNNING); //OS創(chuàng)建任務(wù)3
  36. //         OSTaskCreateStatic("Task4", Task4,  Task4_Stk, Task4_StkSize, 1,     4,     TASK_RUNNING); //OS創(chuàng)建任務(wù)4
  37. //         OSTaskCreateStatic("Task5", Task5,  Task5_Stk, Task5_StkSize, 1,     5,     TASK_RUNNING); //OS創(chuàng)建任務(wù)5
  38.         
  39.          
  40.          //動(dòng)態(tài)創(chuàng)建(系統(tǒng)自動(dòng)根據(jù)棧參數(shù)生成空間,注意設(shè)置好內(nèi)存池的大小)
  41.          /*            任務(wù)名  任務(wù)函數(shù)名  棧大小  時(shí)間片  任務(wù)優(yōu)先級(jí)   任務(wù)狀態(tài)*/
  42.          OSTaskCreate("Task1",  Task1,    128,     1,       4,    TASK_RUNNING); //OS創(chuàng)建任務(wù)1
  43.          OSTaskCreate("Task2",  Task2,    128,     1,       6,    TASK_RUNNING); //OS創(chuàng)建任務(wù)2
  44.          OSTaskCreate("Task3",  Task3,    128,     1,       5,    TASK_RUNNING); //OS創(chuàng)建任務(wù)3
  45.          OSTaskCreate("Task4",  Task4,    128,     1,       5,    TASK_RUNNING); //OS創(chuàng)建任務(wù)4
  46.          OSTaskCreate("Task5",  Task5,    128,     1,       3,    TASK_RUNNING); //OS創(chuàng)建任務(wù)5
  47.          /***********************************************************************************/
  48.          OSStartUp();//OS開(kāi)始運(yùn)行
  49. }


  50. void Task1(void)  //任務(wù)1
  51. {         
  52.         while(1)
  53.          {
  54.                  
  55.                  OS_delayMs(1000);//任務(wù)延時(shí)函數(shù),單位:ms
  56.          }        
  57. }

  58. void Task2(void) //任務(wù)2
  59. {
  60.         while(1)
  61.          {
  62.                  
  63.                  OS_delayDHMS(0,0,0,1);//OS_delayMs()的變形函數(shù),以日時(shí)分秒為輸入?yún)?shù)
  64.          }                        
  65. }

  66. void Task3(void) //任務(wù)3
  67. {        
  68.         while(1)
  69.          {
  70.          
  71.                  OS_delayMs(0);//=0為無(wú)限延時(shí),不占cpu資源
  72.          }                        
  73. }

  74. void Task4(void) //任務(wù)4
  75. {
  76.         while(1)
  77.          {               
  78.                
  79.                  OS_delayMs(0);
  80.          }
  81. }

  82. void Task5(void) //任務(wù)5
  83. {
  84.         while(1)
  85.          {        
  86.         
  87.                  OS_delayMs(0);
  88.          }
  89. }
  90. /********************************************************************************************************************/

復(fù)制代碼

全部資料51hei下載地址:
FSC_STOS_V4.9.7內(nèi)核.7z (1.92 MB, 下載次數(shù): 53)

作者: wdliming    時(shí)間: 2019-9-14 16:06
ucos精簡(jiǎn)版???
作者: 李牧林    時(shí)間: 2019-9-14 18:12
wdliming 發(fā)表于 2019-9-14 16:06
ucos精簡(jiǎn)版???

有興趣可以查看下內(nèi)核實(shí)現(xiàn)原理,我不是作者。
歡迎一起學(xué)習(xí)交流。
作者: leo2002zhang    時(shí)間: 2019-9-16 10:33
就喜歡簡(jiǎn)單點(diǎn)的,這樣可以能入門(mén)一點(diǎn)。謝謝樓主。
作者: 李牧林    時(shí)間: 2019-9-17 21:19
leo2002zhang 發(fā)表于 2019-9-16 10:33
就喜歡簡(jiǎn)單點(diǎn)的,這樣可以能入門(mén)一點(diǎn)。謝謝樓主。

這個(gè)就是很簡(jiǎn)單  看一會(huì)就上手了
作者: Cahn    時(shí)間: 2019-11-6 11:18
感謝。。。!對(duì)我很有幫助




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1