?? main.c
字號:
#include "includes.h"
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void RTI_ISR(void) {
CRGFLG = 0x80;
}
#pragma CODE_SEG DEFAULT
/*
*********************************************************************************************************
* main()
*
* Description : This is the standard entry point for C code. It is assumed that your code will call
* main() once you have performed all necessary 68HC12 and C initialization.
* Arguments : none
*********************************************************************************************************
*/
static void AppTickInit (void);
OS_STK TestTaskStk1[100];
OS_STK TestTaskStk2[100];
/*
**********************************************************************/
void TestTask1(void *pdata)
{
BOOLEAN led_state;
pdata=pdata;
// asm sei;
AppTickInit();
asm cli;
led_state=FALSE;
PTP=0x01;
//OSTimeDlyHMSM(0,0,10,0);
while (1){
OSTimeDlyHMSM(0,0,0,5);
/// int i=0;
// while(i<255){ i++;}
if(led_state==FALSE){
led_state=TRUE;
PTP=0x01;
}
else{
led_state=FALSE;
PTP=0x00;
}
}
}
/*
***********************************************************************/
void TestTask2(void *pdata)
{ BOOLEAN led_state;
pdata=pdata;
led_state=FALSE;
PTP=0x02;
// OSTimeDlyHMSM(0,0,10,0);
while (1){
//OSTimeDly(2);
int j=0;
while(j<255){ j++;}
if(led_state==FALSE){
led_state=TRUE;
PTP=0x02;
}
else{
led_state=FALSE;
PTP=0x00;
}
}
}
/*
************************************************************************/
void main (void)
{
OSInit();
/* Initialize "uC/OS-II, The Real-Time Kernel" */
DDRP=0xFF;
PTP=0x00;
OSTaskCreate(TestTask1,(void*)0,&TestTaskStk1[99],0);
OSTaskCreate(TestTask2,(void*)0,&TestTaskStk2[99],1);
OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
}
/*
*********************************************************************************************************
* 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)
{
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. */
TSCR2_PR1=1;
//TSCR2=0xFF;
#endif
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -