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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3035|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32f103ze,UCOSIII+菜單+時(shí)鐘任務(wù) 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:581602 發(fā)表于 2019-12-15 15:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
相互學(xué)習(xí)一下。

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


  2. /*********************定義任務(wù)控制塊************************************************/

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



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



  10. /********************* 任務(wù)函數(shù)****************************************************/

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


  16.     (void)p_arg;

  17.     BSP_Init();                                                 //板級(jí)初始化
  18.     CPU_Init();                                                 //初始化 CPU 組件(時(shí)間戳、關(guān)中斷時(shí)間測(cè)量和主機(jī)名)

  19.     cpu_clk_freq = BSP_CPU_ClkFreq();                           //獲取 CPU 內(nèi)核時(shí)鐘頻率(SysTick 工作時(shí)鐘)
  20.     cnts = cpu_clk_freq / (CPU_INT32U)OSCfg_TickRate_Hz;        //根據(jù)用戶設(shè)定的時(shí)鐘節(jié)拍頻率計(jì)算 SysTick 定時(shí)器的計(jì)數(shù)值
  21.     OS_CPU_SysTickInit(cnts);                                   //調(diào)用 SysTick 初始化函數(shù),設(shè)置定時(shí)器計(jì)數(shù)值和啟動(dòng)定時(shí)器

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

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

  28.    

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



  73. /*------------------------------------------------------------------------------------------------------------------------------------------*/  
  74.                 OSTaskDel ( 0, & err );                     //刪除起始任務(wù)本身,該任務(wù)不再運(yùn)行
  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);//顯示數(shù)字,高位為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. }
復(fù)制代碼

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


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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日操夜操 | 国产精品1区2区3区 欧美 中文字幕 | 国产1区2区在线观看 | 国产精品久久久久久久午夜 | 你懂的在线视频播放 | 在线观看深夜视频 | 一区在线视频 | 国产精品夜色一区二区三区 | 亚洲欧美一区二区三区国产精品 | 欧美电影免费网站 | 日韩在线不卡 | 国产日韩精品视频 | 欧美xxxx做受欧美 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产午夜精品视频 | 久草热播 | 日韩at| 久久国产精品免费一区二区三区 | 国产无套一区二区三区久久 | 国产精品久久久久久久免费观看 | 黄色免费网址大全 | 亚洲黄色国产 | 日本亚洲一区 | 中文字幕 欧美 日韩 | 91影院在线观看 | 国产成人综合一区二区三区 | 在线观看免费高清av | 午夜视频免费在线 | av片在线免费看 | 在线国产视频 | 免费在线观看一区二区 | www.干| 国产精品一区二区三区久久久 | 国产精品久久久久久久久久不蜜臀 | 欧美日韩一 | 免费精品视频一区 | 亚洲精品播放 | 日韩电影一区二区三区 | 91免费入口 | 亚洲精品电影在线观看 | 亚洲国产18 |