亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? app_main.c

?? UCOSII在mcs12dg128上的移植
?? C
字號:
//==================================================================================================
//| 文件名稱 | APP_MAIN.c
//|--------- |--------------------------------------------------------------------------------------
//| 文件描述 | 系統
//|--------- |--------------------------------------------------------------------------------------
//| 運行環境 | 所有C/++語言編譯器,包括單片機編譯器
//|--------- |--------------------------------------------------------------------------------------
//| 版權聲明 | Copyright2008
//|----------|--------------------------------------------------------------------------------------
//|  版本    |  時間       |  作者     | 描述
//|--------- |-------------|-----------|------------------------------------------------------------
//|  V1.0    | 2008.08.18 | chen       | 初版
//==================================================================================================


#define  APP_MAIN_GLOBALS
#include "..\sources\application\Include.h"

void main (void)
{
	DDRB_BIT0=1;
	DDRT_DDRT4=1; 				 
	DDRP_DDRP3=1;
    TASK_LED_BLUE=OFF;
   	TASK_LED_RED=OFF;
    TASK_LED_YELLOW=OFF;
	PLLINIT(24,5);		//25M總線頻率
    OSInit();                               /* Initialize "uC/OS-II, The Real-Time Kernel"             */
	OSTaskCreateExt(AppStartTask,
    			    (void *)0,
    			    (OS_STK *)&AppStartTaskStk[TASK_STK_SIZE-1],
    			    TASK_START_PRIO,
    			    TASK_START_PRIO,
    			    (OS_STK *)&AppStartTaskStk[0],
    			    TASK_STK_SIZE,
    			    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  
    OSStart();
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                          STARTUP TASK
*
* Description : This is an example of a startup task.  As mentioned in the book's text, you MUST
*               initialize the ticker only once multitasking has started.
* Arguments   : pdata   is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'pdata' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

static void  AppStartTask (void *pdata)
{
    pdata = pdata;
    AppTickInit();                          /* Initialize the ticker                                   */
    OSStatInit();  	//Initialize the stat task.
    MutexSem=OSMutexCreate(MUTEX_PRIO,&err);
    OSTaskCreateExt(AppTaskRedLed,
    			    (void *)0,
    			    (OS_STK *)&AppTaskRedLedStk[TASK_STK_SIZE-1],
    			    TASK_REDLED_PRIO,
    			    TASK_REDLED_PRIO,
    			    (OS_STK *)&AppTaskRedLedStk[0],
    			    TASK_STK_SIZE,
    			    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  
    OSTaskCreateExt(AppTaskBlueLed,
    			    (void *)0,
    			    (OS_STK *)&AppTaskBlueLedStk[TASK_STK_SIZE-1],
    			    TASK_BLUELED_PRIO,
    			    TASK_BLUELED_PRIO,
    			    (OS_STK *)&AppTaskBlueLedStk[0],
    			    TASK_STK_SIZE,
    			    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  
    while (TRUE) 
    {                          /* Task body, always written as an infinite loop.          */
   		TASK_LED_BLUE=OFF;
   		TASK_LED_RED=OFF;
    	TASK_LED_YELLOW=OFF;
		OSTaskSuspend(TASK_START_PRIO);
    }
}
/*
*********************************************************************************************************
*                                          AppTaskRedLed
*
* Description : This is a task to control red led which use a synchronize samphore. 
* Arguments   : pdata   is the argument passed to 'AppTaskRedLed()' by 'OSTaskCreate()'.
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'pdata' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

static void  AppTaskRedLed (void *pdata)
{
    pdata = pdata;
    while (TRUE) 
    {                          /* Task body, always written as an infinite loop.          */
    	OSMutexPend(MutexSem,0,err);
    	TASK_LED_RED=ON;
    	TASK_LED_BLUE=OFF;
    	TASK_LED_YELLOW=OFF;     	
    	OSTimeDlyHMSM(0, 0, 2, 0);
    	OSMutexPost(MutexSem); 
    }
} 

/*
*********************************************************************************************************
*                                          AppTaskBlueLed
*
* Description : This is a task to control blue led which use a synchronize samphore. 
* Arguments   : pdata   is the argument passed to 'AppTaskRedLed()' by 'OSTaskCreate()'.
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'pdata' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

static void  AppTaskBlueLed (void *pdata)
{
    pdata = pdata;
    while (TRUE) 
    {                          /* Task body, always written as an infinite loop.          */
    	OSMutexPend(MutexSem,0,err);
    	TASK_LED_RED=OFF;
    	TASK_LED_BLUE=ON;
    	TASK_LED_YELLOW=OFF;
    	OSTimeDlyHMSM(0, 0, 2, 0);
    	OSMutexPost(MutexSem);
    }
}  

/*$PAGE*/
/*
*********************************************************************************************************
*                                      TICKER INITIALIZATION
*
* Description : This function is used to initialize one of the eight output compares to generate an
*               interrupt at the desired tick rate.  You must decide which output compare you will be
*               using by setting the configuration variable OS_TICK_OC (see OS_CFG.H and also OS_CPU_A.S) 
*               to 0..7 depending on which output compare to use.
*                   OS_TICK_OC set to 0 chooses output compare #0 as the ticker source
*                   OS_TICK_OC set to 1 chooses output compare #1 as the ticker source
*                   OS_TICK_OC set to 2 chooses output compare #2 as the ticker source
*                   OS_TICK_OC set to 3 chooses output compare #3 as the ticker source
*                   OS_TICK_OC set to 4 chooses output compare #4 as the ticker source
*                   OS_TICK_OC set to 5 chooses output compare #5 as the ticker source
*                   OS_TICK_OC set to 6 chooses output compare #6 as the ticker source
*                   OS_TICK_OC set to 7 chooses output compare #7 as the ticker source
* Arguments   : none
* Notes       : 1) It is assumed that you have set the prescaler rate of the free running timer within
*                  the first 64 E clock cycles of the 68HC12.
*               2) CPU registers are define in 6812dp256.h (see Metrowerks codewarrior compiler)
*********************************************************************************************************
*/

static void AppTickInit (void)
{
    TSCR2|=3; //預分頻器輸出時鐘頻率為P時鐘的1/8,定時器溢出時間為21.97ms 
   	TSCR1   = 0x80;                         /* Enable timer*/
        
#if OS_TICK_OC == 0
    TIOS  |= 0x01;                          /* Make channel an output compare                          */
    TC0    = TCNT + OS_TICK_OC_CNTS;        /* Set TC0 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x01;	              			/* set timer control reg */
    TIE |= 0x01;                          /* Enable OC0 interrupt.                                   */
#endif

#if OS_TICK_OC == 1 
    TIOS  |= 0x02;                          /* Make channel an output compare                          */
    TC1    = TCNT + OS_TICK_OC_CNTS;        /* Set TC1 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x02;	              			/* set timer control reg */
    TIE |= 0x02;                          /* Enable OC1 interrupt.                                   */
#endif

#if OS_TICK_OC == 2
    TIOS  |= 0x04;                          /* Make channel an output compare                          */
    TC2    = TCNT + OS_TICK_OC_CNTS;        /* Set TC2 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x04;	              			/* set timer control reg */
    TIE |= 0x04;                          /* Enable OC2 interrupt.                                   */
#endif

#if OS_TICK_OC == 3
    TIOS  |= 0x08;                          /* Make channel an output compare                          */
    TC3    = TCNT + OS_TICK_OC_CNTS;        /* Set TC3 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x08;	              			/* set timer control reg */
    TIE |= 0x08;                          /* Enable OC3 interrupt.                                   */
#endif

#if OS_TICK_OC == 4
    TIOS  |= 0x10;                          /* Make channel an output compare                          */
    TC4    = TCNT + OS_TICK_OC_CNTS;        /* Set TC4 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x10;	              			/* set timer control reg */
    TIE |= 0x10;                          /* Enable OC4 interrupt.                                   */
#endif

#if OS_TICK_OC == 5
    TIOS  |= 0x20;                          /* Make channel an output compare                          */
    TC5    = TCNT + OS_TICK_OC_CNTS;        /* Set TC5 to present time + OS_TICK_OC_CNTS               */
    TCTL1  |= 0x20;	              			/* set timer control reg */
    TIE |= 0x20;                          /* Enable OC5 interrupt.                                   */
#endif

#if OS_TICK_OC == 6
    TIOS  |= 0x40;                          /* Make channel an output compare                          */
    TC6    = TCNT + OS_TICK_OC_CNTS;        /* Set TC6 to present time + OS_TICK_OC_CNTS */
    TCTL1  |= 0x40;	              			/* set timer control reg */
    TIE |= 0x40;                          /* Enable OC6 interrupt.                                   */
#endif

#if OS_TICK_OC == 7
    TIOS  |= 0x80;                          /* Make channel an output compare                          */
    TC7    = TCNT + OS_TICK_OC_CNTS;
    TCTL1  |= 0x80;							/* set timer control reg */
    TIE |= 0x80;                          /* Enable OC7 interrupt. */
   								                             
#endif
}

/******************************************************************
*函數名:PLLINIT
*入口參數

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影一区二区三区| 91麻豆福利精品推荐| 亚洲主播在线观看| 综合激情成人伊人| 亚洲同性同志一二三专区| 18涩涩午夜精品.www| 亚洲丝袜精品丝袜在线| 亚洲乱码国产乱码精品精的特点| 亚洲区小说区图片区qvod| 亚洲美女免费视频| 亚洲成av人影院| 国精品**一区二区三区在线蜜桃| 蜜臀久久久99精品久久久久久| 久久国产精品免费| 国产乱子轮精品视频| 成人性色生活片免费看爆迷你毛片| 国产宾馆实践打屁股91| 成人激情小说网站| 91精品1区2区| 欧美电影在线免费观看| 久久老女人爱爱| 亚洲欧洲成人自拍| 亚洲va国产va欧美va观看| 老司机免费视频一区二区三区| 成人污污视频在线观看| 在线视频一区二区三区| 91麻豆精品国产91久久久使用方法| 日韩免费成人网| 中文字幕av不卡| 亚洲国产人成综合网站| 精品一区二区三区在线视频| www.欧美精品一二区| 欧美日韩激情一区二区| 久久综合狠狠综合| 一区二区三区日韩欧美| 另类人妖一区二区av| 99在线视频精品| 欧美高清激情brazzers| 中文字幕精品一区二区精品绿巨人| 亚洲国产综合视频在线观看| 韩国欧美国产1区| 欧美在线三级电影| 久久久蜜臀国产一区二区| 亚洲永久精品大片| 国产91丝袜在线18| 欧美人狂配大交3d怪物一区| 国产精品久久久久久久裸模| 日本 国产 欧美色综合| 一本色道久久综合亚洲91 | 国产精品久久久久久久蜜臀 | 久久亚洲精品国产精品紫薇| 亚洲人成在线播放网站岛国 | 国产精品午夜在线| 日韩高清不卡在线| 色综合久久久久网| 久久久综合视频| 日韩av高清在线观看| 9色porny自拍视频一区二区| 久久日一线二线三线suv| 亚洲福中文字幕伊人影院| 99久久免费精品高清特色大片| 欧美不卡一区二区| 天堂影院一区二区| 91成人在线免费观看| 中文字幕在线不卡视频| 成人一级视频在线观看| 久久一区二区视频| 久久99蜜桃精品| 91麻豆精品国产自产在线| 亚洲午夜在线电影| 色婷婷激情综合| 亚洲情趣在线观看| 色综合久久久久久久久| 亚洲色图欧洲色图婷婷| caoporm超碰国产精品| 亚洲国产精品传媒在线观看| 国产精一区二区三区| 久久久蜜桃精品| 国产成人在线影院| 欧美韩日一区二区三区四区| 成人午夜免费av| 国产精品理论在线观看| 99热精品国产| 亚洲精品中文字幕在线观看| eeuss鲁片一区二区三区在线观看| 亚洲国产成人私人影院tom| 国产成人精品网址| 国产精品女人毛片| 91免费国产视频网站| 一区二区三区四区在线免费观看| 日本久久一区二区| 日韩激情一二三区| 精品88久久久久88久久久| 国产.精品.日韩.另类.中文.在线.播放| 久久女同精品一区二区| 成人av网站在线| 亚洲在线免费播放| 678五月天丁香亚洲综合网| 狂野欧美性猛交blacked| 久久综合久久综合久久综合| 成人一道本在线| 一区二区三区欧美日韩| 8x8x8国产精品| 国产在线精品视频| 亚洲免费色视频| 精品日产卡一卡二卡麻豆| 欧美日韩精品久久久| 日本欧美肥老太交大片| 久久久91精品国产一区二区精品| 99久久国产综合精品麻豆| 亚洲高清免费观看| 久久色中文字幕| 色8久久人人97超碰香蕉987| 日本欧美肥老太交大片| 国产精品午夜春色av| 欧美精品在线观看一区二区| 国产精品一区在线观看你懂的| 亚洲视频一区二区免费在线观看| 91精品国模一区二区三区| 国产99精品视频| 五月天欧美精品| 国产精品毛片高清在线完整版| 6080国产精品一区二区| caoporm超碰国产精品| 久久国产精品99精品国产| 樱桃视频在线观看一区| 欧美xxxxxxxx| 在线成人小视频| 91视频.com| 国产91丝袜在线18| 久久电影国产免费久久电影 | 欧美美女一区二区三区| 成人美女视频在线观看18| 久久国产精品72免费观看| 一区二区三区国产豹纹内裤在线| 国产三级精品三级在线专区| 日韩西西人体444www| 精品视频在线免费观看| 99re8在线精品视频免费播放| 国产精品影视在线| 美国三级日本三级久久99| 午夜精品影院在线观看| 一区二区三区在线播| 亚洲欧美区自拍先锋| 国产精品毛片久久久久久| 国产日韩欧美激情| 国产视频一区不卡| 久久久99精品久久| 国产午夜精品久久久久久免费视| 久久天天做天天爱综合色| 精品国产髙清在线看国产毛片| 91精品国产综合久久久蜜臀图片 | 91精品国产综合久久久久久漫画 | 精品蜜桃在线看| 日韩一区二区在线播放| 欧美精品乱码久久久久久| 欧美日韩国产三级| 欧美肥大bbwbbw高潮| 日韩一区二区三免费高清| 91精品国产综合久久福利软件| 在线91免费看| 日韩一级二级三级| 日韩视频免费观看高清完整版| 日韩欧美自拍偷拍| 2020国产精品久久精品美国| 久久蜜桃香蕉精品一区二区三区| 久久亚洲精华国产精华液| 国产免费久久精品| 综合久久久久久| 亚洲观看高清完整版在线观看 | 大桥未久av一区二区三区中文| 成人免费视频app| 色婷婷亚洲综合| 91精品国产综合久久久蜜臀图片| 精品国产第一区二区三区观看体验| 久久久精品天堂| 亚洲天堂av一区| 日韩成人免费电影| 国产高清在线观看免费不卡| 91无套直看片红桃| 91精品国产91久久久久久最新毛片 | 国产精品美女久久久久aⅴ| 亚洲欧洲无码一区二区三区| 午夜精品视频一区| 蜜桃av一区二区在线观看| 成人自拍视频在线| 欧美欧美欧美欧美首页| 久久精品人人做人人综合| 亚洲蜜臀av乱码久久精品| 久久精品国产亚洲5555| 99久久久久免费精品国产| 欧美日韩国产片| 中文字幕中文字幕一区| 日韩电影在线观看电影| av一区二区三区在线| 日韩欧美一级二级| 曰韩精品一区二区| 国产成人精品一区二| 91精品一区二区三区在线观看| 国产精品电影院|