?? app_main.c
字號:
//==================================================================================================
//| 文件名稱 | APP_MAIN.c
//|--------- |--------------------------------------------------------------------------------------
//| 文件描述 | 系統(tǒng)
//|--------- |--------------------------------------------------------------------------------------
//| 運行環(huán)境 | 所有C/++語言編譯器,包括單片機編譯器
//|--------- |--------------------------------------------------------------------------------------
//| 版權(quán)聲明 | Copyright2008
//|----------|--------------------------------------------------------------------------------------
//| 版本 | 時間 | 作者 | 描述
//|--------- |-------------|-----------|------------------------------------------------------------
//| V1.0 | 2008.08.18 | chen | 初版
//==================================================================================================
#define APP_MAIN_GLOBALS
#include "..\sources\application\Include.h"
void main (void)
{
DDRB_BIT0=1;
TASK_IDLE_LED=ON;
DDRT_DDRT4=1;
OS_TICK_LED=ON;
PLLINIT(24,5); //25M總線頻率
OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
/* OSTaskCreateExt(AppStartTask,
(void *)0,
(OS_STK *)&AppStartTaskStk[TASK_STK_SIZE],
TASK_START_PRIO,
TASK_START_PRIO,
(OS_STK *)&AppStartTaskStk[TASK_STK_SIZE],
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();
while (TRUE)
{ /* Task body, always written as an infinite loop. */
OSTimeDlyHMSM(0, 0, 5, 0);
if(ON==TASK_APP_START_LED)
TASK_APP_START_LED=OFF;
else
TASK_APP_START_LED=ON;
}
}
/*$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; //預(yù)分頻器輸出時鐘頻率為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
}
/******************************************************************
*函數(shù)名:PLLINIT
*入口參數(shù)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -