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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f103ze,UCOSIII+菜單+時鐘任務 源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:581602 發(fā)表于 2019-12-15 15:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
相互學習一下。

單片機源程序如下:
  1. #include "includes.h"


  2. /*********************定義任務控制塊************************************************/

  3. static  OS_TCB        MENU_TCB;                                                           //定義MENU任務控制塊
  4. static  OS_TCB        RTC_TCB;                                                           //定義RTC任務控制塊
  5. static  OS_TCB        CLOCK_TCB;                                                           //定義CLOCK任務控制塊



  6. /********************* 定義任務棧****************************************************/
  7. static        CPU_STK        MENU_Stk[TASK_MENU_STK_SIZE];                   //定義任務堆棧
  8. static        CPU_STK        RTC_Stk[TASK_RTC_STK_SIZE];                   //定義任務堆棧
  9. static        CPU_STK        CLOCK_Stk[TASK_RTC_STK_SIZE];                   //定義任務堆棧



  10. /********************* 任務函數****************************************************/

  11. void  AppTaskStart (void *p_arg)
  12. {
  13.     CPU_INT32U  cpu_clk_freq;                                                                                                                                                //CPU內核時鐘
  14.     CPU_INT32U  cnts;                                                                                                                                                                                // 根據用戶設定的時鐘節(jié)拍頻率計算 SysTick 定時器的計數值
  15.     OS_ERR      err;


  16.     (void)p_arg;

  17.     BSP_Init();                                                 //板級初始化
  18.     CPU_Init();                                                 //初始化 CPU 組件(時間戳、關中斷時間測量和主機名)

  19.     cpu_clk_freq = BSP_CPU_ClkFreq();                           //獲取 CPU 內核時鐘頻率(SysTick 工作時鐘)
  20.     cnts = cpu_clk_freq / (CPU_INT32U)OSCfg_TickRate_Hz;        //根據用戶設定的時鐘節(jié)拍頻率計算 SysTick 定時器的計數值
  21.     OS_CPU_SysTickInit(cnts);                                   //調用 SysTick 初始化函數,設置定時器計數值和啟動定時器

  22. //    Mem_Init(); 有內存管理代替                                 //初始化內存管理組件(堆內存池和內存池表)

  23. #if OS_CFG_STAT_TASK_EN > 0u                                    //如果使能(默認使能)了統(tǒng)計任務
  24.     OSStatTaskCPUUsageInit(&err);                               //計算沒有應用任務(只有空閑任務)運行時 CPU 的(最大)
  25. #endif                                                          //容量(決定 OS_Stat_IdleCtrMax 的值,為后面計算 CPU
  26.                                                                 //使用率使用)。
  27.     CPU_IntDisMeasMaxCurReset();                                //復位(清零)當前最大關中斷時間

  28.    

  29. /*---------------------------------------------------------------------------------------------------------------------------------------*/
  30.                 /* 創(chuàng)建 munu 任務 */
  31.           OSTaskCreate((OS_TCB     *)&MENU_TCB,                                        //任務控制塊指針         
  32.                  (CPU_CHAR   *)"MENU",                                                //任務名稱
  33.                  (OS_TASK_PTR )Task_MENU,                                        //任務代碼指針
  34.                  (void       *)0,                                                        //傳遞給任務的參數parg
  35.                  (OS_PRIO     )TASK_MENU_PRIO,                                //任務優(yōu)先級
  36.                  (CPU_STK    *)&MENU_Stk[0],                                //任務堆棧基地址
  37.                  (CPU_STK_SIZE)TASK_MENU_STK_SIZE/10,                //堆棧剩余警戒線
  38.                  (CPU_STK_SIZE)TASK_MENU_STK_SIZE,                        //堆棧大小
  39.                  (OS_MSG_QTY  )0,                                                        //可接收的最大消息隊列數
  40.                  (OS_TICK     )0,                                                        //時間片輪轉時間
  41.                  (void       *)0,                                                        //任務控制塊擴展信息
  42.                  (OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),         //任務選項
  43.                  (OS_ERR     *)&err);                                                //返回值     
  44.         /* 創(chuàng)建 RTC 任務 */
  45.           OSTaskCreate((OS_TCB     *)&RTC_TCB,                                        //任務控制塊指針         
  46.                  (CPU_CHAR   *)"RTC",                                                //任務名稱
  47.                  (OS_TASK_PTR )Task_RTC,                                        //任務代碼指針
  48.                  (void       *)0,                                                        //傳遞給任務的參數parg
  49.                  (OS_PRIO     )TASK_RTC_PRIO,                                //任務優(yōu)先級
  50.                  (CPU_STK    *)&RTC_Stk[0],                                //任務堆棧基地址
  51.                  (CPU_STK_SIZE)TASK_RTC_STK_SIZE/10,                //堆棧剩余警戒線
  52.                  (CPU_STK_SIZE)TASK_RTC_STK_SIZE,                        //堆棧大小
  53.                  (OS_MSG_QTY  )0,                                                        //可接收的最大消息隊列數
  54.                  (OS_TICK     )0,                                                        //時間片輪轉時間
  55.                  (void       *)0,                                                        //任務控制塊擴展信息
  56.                  (OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),         //任務選項
  57.                  (OS_ERR     *)&err);                                                //返回值                                                                           
  58.    /* 創(chuàng)建 CLOCK 任務 */
  59.           OSTaskCreate((OS_TCB     *)&CLOCK_TCB,                                        //任務控制塊指針         
  60.                  (CPU_CHAR   *)"CLOCK",                                                //任務名稱
  61.                  (OS_TASK_PTR )Task_CLOCK,                                        //任務代碼指針
  62.                  (void       *)0,                                                        //傳遞給任務的參數parg
  63.                  (OS_PRIO     )TASK_CLOCK_PRIO,                                //任務優(yōu)先級
  64.                  (CPU_STK    *)&CLOCK_Stk[0],                                //任務堆棧基地址
  65.                  (CPU_STK_SIZE)TASK_CLOCK_STK_SIZE/10,                //堆棧剩余警戒線
  66.                  (CPU_STK_SIZE)TASK_CLOCK_STK_SIZE,                        //堆棧大小
  67.                  (OS_MSG_QTY  )0,                                                        //可接收的最大消息隊列數
  68.                  (OS_TICK     )0,                                                        //時間片輪轉時間
  69.                  (void       *)0,                                                        //任務控制塊擴展信息
  70.                  (OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),         //任務選項
  71.                  (OS_ERR     *)&err);                                                //返回值                                                                           
  72. //   OSTaskSuspend (&CLOCK_TCB, & err );                    //掛起CLOCK



  73. /*------------------------------------------------------------------------------------------------------------------------------------------*/  
  74.                 OSTaskDel ( 0, & err );                     //刪除起始任務本身,該任務不再運行
  75.                
  76.                
  77.                
  78. }


  79. void Task_RTC(void *p_arg)
  80. {
  81.         OS_ERR err;
  82.         u8 t;

  83.        
  84.        
  85.         while(1)
  86.         {       
  87.                 t=calendar.sec;
  88.                 RTC_Get();               
  89.         if(t!=calendar.sec)
  90.                 {
  91.                         t=calendar.sec;
  92.                         LCD_ShowString(20,2,80,16,16,"  :  :  ");
  93.                        
  94.                        
  95.                         LCD_ShowxNum(20,2,calendar.hour,2,16,0);//顯示數字,高位為0,還是顯示,mode:0,不填充;1,填充0.
  96.                         LCD_ShowxNum(44,2,calendar.min,2,16,0);
  97.                         LCD_ShowxNum(68,2,calendar.sec,2,16,0);
  98.                 }       
  99.                        
  100.         OSTimeDlyHMSM(0, 0,0,1,OS_OPT_TIME_HMSM_STRICT,&err);
  101.         }
  102. }
復制代碼

所有資料51hei提供下載:
2.3 OSok - 菜單 -時鐘.7z (720.42 KB, 下載次數: 89)


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天亚洲 | 国产高清视频一区二区 | 青青草原综合久久大伊人精品 | 天天久久 | 国产成人在线一区 | 欧美 日韩 中文 | 免费观看av | 日韩精品在线播放 | 欧美亚洲另类丝袜综合网动图 | 亚洲免费视频一区 | 日本超碰 | 成人一区在线观看 | 成人在线免费观看 | 亚洲精品电影网在线观看 | 成人精品在线观看 | 日本又色又爽又黄的大片 | 精品国产乱码久久久久久闺蜜 | 99久久久久国产精品免费 | 亚洲在线视频 | 国产1区| 欧美成人一级 | www312aⅴ欧美在线看 | 天堂va在线 | 亚洲一区二区在线播放 | 久久丝袜| 久草青青 | 国产99久久精品一区二区300 | 夜夜艹天天干 | 操人视频在线观看 | 国产精品色 | 欧美成人精品一区二区男人看 | 二区av| 毛片a| 亚洲综合二区 | 国产综合精品一区二区三区 | 日韩在线小视频 | 在线国产一区二区 | www国产成人免费观看视频,深夜成人网 | 性高朝久久久久久久3小时 av一区二区三区四区 | 亚洲精品乱码久久久久久黑人 | 国产一区二区三区精品久久久 |