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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AVR128_uC/OS-II 移植代碼

[復制鏈接]
跳轉到指定樓層
樓主
開發平臺:AVR128

移植系統:uC/OS-II
功能:  系統建立兩個任務,操作“8個LED”  以及 “蜂鳴器”(附上LED和蜂鳴器 部分的原理圖)

代碼量少,添加了個人注釋,容易理解

電路原理圖如下:


此工程為TS8900-M128開發板uCOSii移植教程代碼

功能是
    1--8個LED進行“亮-滅”操作
    2--控制蜂鳴器“響-不響”操作

單片機源程序如下:
  1. /*
  2. ***********************************Copyright(c)*****************************
  3. *                                                                           
  4. *                                                         All Rights Reserved
  5. *                                            
  6. *
  7. *---------------------------------File Info---------------------------------
  8. *File Name             : main.c
  9. *Descriptor            : 主程序
  10. *Create By             :
  11. *Create Date           : 2008-9-26
  12. *Version               : V1.0
  13. *Note                     :
  14. *
  15. *---------------------------------------------------------------------------
  16. *Modified By          :
  17. *Modified Date  :
  18. *Version        :
  19. *Note                     :
  20. *
  21. ****************************************************************************
  22. */
  23. #define _IN_MAIN_
  24. #include "config.h"

  25. #define                          OS_TASK_MAIN_STK_SIZE                                 200
  26. #define                          OS_TASK_MAIN_HARD_STK_SIZE                            40
  27. #define                          OS_TASK2_STK_SIZE                                         200
  28. #define                          OS_TASK2_HARD_STK_SIZE                                    40

  29. OS_STK                          TaskMainStk[OS_TASK_MAIN_STK_SIZE];
  30. OS_STK                          Task2Stk[OS_TASK2_STK_SIZE];
  31. void*                                MainMsg[16];

  32. /***************************************************************************
  33. *Function Name                :OSTickISRInit       
  34. *Description        :系統時鐘初始化
  35. *Input parameters   :
  36. *Return Values:           :
  37. *Global Variables         :
  38. *Calling Modules          :
  39. ***
  40. *Create By                      :
  41. *Create Tate                 :2008-9-26
  42. ***
  43. *Modified By                  :
  44. *Modified Date            :
  45. *Note                              :
  46. ****************************************************************************/
  47. void OSTickISRInit(void)
  48. {
  49.     TCNT0 = 0x00;//將“定時計數器0”清零
  50.     OCR0 = TCNT0_INIT;// “OCR0”為“輸出比較寄存器0”
  51.     TCCR0 = TMC8_CK128;// “TCCR0”為“定時計數器0的控制寄存器”  WGM01 = 3 ;CS02 = 2 ; CS00 = 0 ;  BIT(x)        (1 << (x)) ,即有TCCR0 = (1<<3)|(1<<2)|(1<<0) ,
  52.                                            // --設定“CTC--匹配時清楚定時計數器”模式、“COM01- COM00--正常端口操作”、“CS02-CS01-CS00--時鐘選擇位定義為系統時鐘128分頻”

  53.         TIMSK = BIT(OCIE0);// “TIMSK-定時計數器中斷屏蔽寄存器”;“OCIE0 = 1” ;使能“定時計數器0” 的輸出比較匹配中斷。
  54. }
  55. /***************************************************************************
  56. *Function Name                :MainTask       
  57. *Description        :主線程任務
  58. *Input parameters   :
  59. *Return Values:           :
  60. *Global Variables         :
  61. *Calling Modules          :
  62. ***
  63. *Create By                      :
  64. *Create Tate                 :2008-9-26
  65. ***
  66. *Modified By                  :
  67. *Modified Date            :
  68. *Note                              :
  69. ****************************************************************************/
  70. void Task2(void* pData);


  71. /***************************************************************************

  72. “主任務”的主要“任務代碼”


  73. ****************************************************************************/
  74. void MainTask(void* pData)
  75. {       
  76.         uint8 byTemp = 0xff;
  77.     pData = pData;
  78.         DDRA = 0xff;// --GpioA引腳方向為“輸出”
  79.         DDRE = 0xff;// --GpioE引腳方向為“輸出”
  80.     OSTickISRInit();// --系統時鐘初始化
  81.        
  82.         OSTaskStkSize     = OS_TASK2_STK_SIZE;// --為第二個任務配置“堆棧大小”以及“硬件堆棧大小”      
  83.     OSTaskHardStkSize = OS_TASK2_HARD_STK_SIZE;  
  84.        
  85.     OSTaskCreate(Task2, (void*)0, (OS_STK*)&Task2Stk[OS_TASK2_STK_SIZE - 1], 1);// --建立“次任務”,優先級為1
  86.        
  87.         while(TRUE)
  88.     {
  89.             byTemp = ~byTemp;// --將定義的字節取反,用于對LED輸出相反的電平,即“亮-滅”
  90.                PORTA = byTemp;// --將值從GpioA 發送出去
  91.                 PORTE = 0x00;// --將74HC573的“LE-鎖存引腳”拉低,將數據填到74HC573的寄存器中
  92.                 PORTE = 0xff;// --將“LE”拉高,執行直通模式
  93.                 OSTimeDlyHMSM(0, 0, 0, 600);// --執行“任務延時”,等系統執行其他“最高優先級”的任務
  94.                                                                         //(在優先級為0的“主任務”處于等待狀態”,那么當前的“最高優先級”任務就是“Task2”)
  95.     }
  96. }
  97. /***************************************************************************
  98. *Function Name                :Task2       
  99. *Description        :
  100. *Input parameters   :
  101. *Return Values:           :
  102. *Global Variables         :
  103. *Calling Modules          :
  104. ***
  105. *Create By                      :
  106. *Create Tate                 :2008-9-26
  107. ***
  108. *Modified By                  :
  109. *Modified Date            :
  110. *Note                              :
  111. ****************************************************************************/
  112. void Task2(void* pData)
  113. {       
  114.     pData = pData;
  115.         DDRG |= BIT(4);// --0x10 GpioG^4 設置為輸出,控制“蜂鳴器”的引腳
  116.         while(TRUE)
  117.     {
  118.             PORTG ^= BIT(4);
  119.             OSTimeDlyHMSM(0, 0, 1, 0);
  120.     }
  121. }
  122. /***************************************************************************
  123. *Function Name                :main       
  124. *Description        :主函數
  125. *Input parameters   :
  126. *Return Values:           :
  127. *Global Variables         :
  128. *Calling Modules          :
  129. ***
  130. *Create By                      :
  131. *Create Tate                 :2008-9-26
  132. ***
  133. *Modified By                  :
  134. *Modified Date            :
  135. *Note                              :
  136. ****************************************************************************/
  137. void main(void)
  138. {
  139.     OSTaskStkSize     = OS_TASK_STK_SIZE;// --設置堆棧的總空間      
  140.     OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE;// --設置硬件堆棧空間(AVR單片機)
  141.     OSInit();// --uCOSII初始化        
  142.     OSTaskStkSize     = OS_TASK_MAIN_STK_SIZE;// “主任務”堆棧的總大小空間      
  143.     OSTaskHardStkSize = OS_TASK_MAIN_HARD_STK_SIZE;// “主任務”的硬件堆棧空間  
  144.     OSTaskCreate(MainTask, (void*)0, (OS_STK*)&TaskMainStk[OS_TASK_MAIN_STK_SIZE - 1], 0);// --建立“主任務”,“堆棧增長方向為向下”,擁有“最高優先級”
  145.         OSStart();// --系統啟動
  146. }
復制代碼

所有資料51hei提供下載:
TS8900-M128-uCOS-II移植.rar (232.22 KB, 下載次數: 23)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色毛片免费 | 中文字幕一区二区三区四区 | 国产九九精品 | 亚洲精品一区二区在线观看 | 日本不卡一区二区三区 | 婷婷激情综合 | 天天插天天射天天干 | 亚洲视频在线看 | 一区二区三区四区在线视频 | 精品一区久久 | 久色激情 | 日韩 欧美 综合 | 夜夜骚 | 91精品国产综合久久精品 | 欧美一区二区三区久久精品视 | 成人免费淫片aa视频免费 | 久久9视频 | 国产 日韩 欧美 在线 | 久久久区 | 亚洲电影专区 | av高清| 蜜桃av鲁一鲁一鲁一鲁 | 久久久久久久久久久丰满 | 久久国际精品 | 成人精品国产一区二区4080 | 日本手机看片 | 亚洲国产精品一区二区第一页 | 精品在线一区二区三区 | av免费成人 | 91精品国产一区二区三区 | 国产欧美视频一区 | 黑人一级片视频 | 在线看91| 欧美一级黄色片在线观看 | 黄视频免费观看 | 国产精品毛片一区二区三区 | 国产激情三区 | 九九导航 | 日本欧美在线观看视频 | 毛片视频网址 | 国产91在线观看 |