欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
AVR128_uC/OS-II 移植代碼
[打印本頁]
作者:
phang
時間:
2018-9-15 11:41
標題:
AVR128_uC/OS-II 移植代碼
開發平臺:AVR128
移植系統:uC/OS-II
功能: 系統建立兩個任務,操作“8個LED” 以及 “蜂鳴器”(附上LED和蜂鳴器 部分的原理圖)
代碼量少,添加了個人注釋,容易理解
電路原理圖如下:
LED和蜂鳴器部分原理圖.png
(79.79 KB, 下載次數: 89)
下載附件
LED和蜂鳴器部分原理圖
2018-9-15 11:39 上傳
此工程為TS8900-M128開發板uCOSii移植教程代碼
功能是
1--8個LED進行“亮-滅”操作
2--控制蜂鳴器“響-不響”操作
單片機源程序如下:
/*
***********************************Copyright(c)*****************************
*
* All Rights Reserved
*
*
*---------------------------------File Info---------------------------------
*File Name : main.c
*Descriptor : 主程序
*Create By :
*Create Date : 2008-9-26
*Version : V1.0
*Note :
*
*---------------------------------------------------------------------------
*Modified By :
*Modified Date :
*Version :
*Note :
*
****************************************************************************
*/
#define _IN_MAIN_
#include "config.h"
#define OS_TASK_MAIN_STK_SIZE 200
#define OS_TASK_MAIN_HARD_STK_SIZE 40
#define OS_TASK2_STK_SIZE 200
#define OS_TASK2_HARD_STK_SIZE 40
OS_STK TaskMainStk[OS_TASK_MAIN_STK_SIZE];
OS_STK Task2Stk[OS_TASK2_STK_SIZE];
void* MainMsg[16];
/***************************************************************************
*Function Name :OSTickISRInit
*Description :系統時鐘初始化
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :
*Create Tate :2008-9-26
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void OSTickISRInit(void)
{
TCNT0 = 0x00;//將“定時計數器0”清零
OCR0 = TCNT0_INIT;// “OCR0”為“輸出比較寄存器0”
TCCR0 = TMC8_CK128;// “TCCR0”為“定時計數器0的控制寄存器” WGM01 = 3 ;CS02 = 2 ; CS00 = 0 ; BIT(x) (1 << (x)) ,即有TCCR0 = (1<<3)|(1<<2)|(1<<0) ,
// --設定“CTC--匹配時清楚定時計數器”模式、“COM01- COM00--正常端口操作”、“CS02-CS01-CS00--時鐘選擇位定義為系統時鐘128分頻”
TIMSK = BIT(OCIE0);// “TIMSK-定時計數器中斷屏蔽寄存器”;“OCIE0 = 1” ;使能“定時計數器0” 的輸出比較匹配中斷。
}
/***************************************************************************
*Function Name :MainTask
*Description :主線程任務
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :
*Create Tate :2008-9-26
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void Task2(void* pData);
/***************************************************************************
“主任務”的主要“任務代碼”
****************************************************************************/
void MainTask(void* pData)
{
uint8 byTemp = 0xff;
pData = pData;
DDRA = 0xff;// --GpioA引腳方向為“輸出”
DDRE = 0xff;// --GpioE引腳方向為“輸出”
OSTickISRInit();// --系統時鐘初始化
OSTaskStkSize = OS_TASK2_STK_SIZE;// --為第二個任務配置“堆棧大小”以及“硬件堆棧大小”
OSTaskHardStkSize = OS_TASK2_HARD_STK_SIZE;
OSTaskCreate(Task2, (void*)0, (OS_STK*)&Task2Stk[OS_TASK2_STK_SIZE - 1], 1);// --建立“次任務”,優先級為1
while(TRUE)
{
byTemp = ~byTemp;// --將定義的字節取反,用于對LED輸出相反的電平,即“亮-滅”
PORTA = byTemp;// --將值從GpioA 發送出去
PORTE = 0x00;// --將74HC573的“LE-鎖存引腳”拉低,將數據填到74HC573的寄存器中
PORTE = 0xff;// --將“LE”拉高,執行直通模式
OSTimeDlyHMSM(0, 0, 0, 600);// --執行“任務延時”,等系統執行其他“最高優先級”的任務
//(在優先級為0的“主任務”處于等待狀態”,那么當前的“最高優先級”任務就是“Task2”)
}
}
/***************************************************************************
*Function Name :Task2
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :
*Create Tate :2008-9-26
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void Task2(void* pData)
{
pData = pData;
DDRG |= BIT(4);// --0x10 GpioG^4 設置為輸出,控制“蜂鳴器”的引腳
while(TRUE)
{
PORTG ^= BIT(4);
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
/***************************************************************************
*Function Name :main
*Description :主函數
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :
*Create Tate :2008-9-26
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void main(void)
{
OSTaskStkSize = OS_TASK_STK_SIZE;// --設置堆棧的總空間
OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE;// --設置硬件堆棧空間(AVR單片機)
OSInit();// --uCOSII初始化
OSTaskStkSize = OS_TASK_MAIN_STK_SIZE;// “主任務”堆棧的總大小空間
OSTaskHardStkSize = OS_TASK_MAIN_HARD_STK_SIZE;// “主任務”的硬件堆棧空間
OSTaskCreate(MainTask, (void*)0, (OS_STK*)&TaskMainStk[OS_TASK_MAIN_STK_SIZE - 1], 0);// --建立“主任務”,“堆棧增長方向為向下”,擁有“最高優先級”
OSStart();// --系統啟動
}
復制代碼
所有資料51hei提供下載:
TS8900-M128-uCOS-II移植.rar
(232.22 KB, 下載次數: 23)
2018-9-15 11:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1