📄 app.c
字号:
}
else
{
val = DUTY_CYCLE*MOD/100;
}
TPM3C4VH = (byte) (val>>8); // set duty cycle for Channel 4
TPM3C4VL = (byte) (val);
break;
case 5:
TPM3C5SC = 0x24; // Center-aligned low-true pulses
if (MOD>100)
{
val = DUTY_CYCLE*(MOD/100);
}
else
{
val = DUTY_CYCLE*MOD/100;
}
TPM3C5VH = (byte) (val>>8); // set duty cycle for Channel 5
TPM3C5VL = (byte) (val);
break;
default:
break;
}
TPM3SC = (byte) (0x28|(CLK_PS&0x07)); // All center-aligned, bus frequency/Prescale, start timer
} //end TPM3Cx_PWM
/******************************* KBI ISR ***********************************/
interrupt VectorNumber_Vkeyboard void KBIx_ISR(void)
{
some_key_pressed = yes;
key_press_debounced = no;
KBI1SC_KBIE = 0; // Disable KBI1 interrupts
KBI2SC_KBIE = 0; // Disable KBI2 interrupts
KBI1SC_KBACK = 1; // Clear KBACK
KBI2SC_KBACK = 1; // Clear KBACK
RTCSC_RTIF = 1; // Clear RTIF flag
RTCMOD = 0x01; // Set debounce period 10ms
RTCSC = 0x1B; // Enable RTIE
}
/******************************* RTC ISR ***********************************/
interrupt VectorNumber_Vrtc void RTC_ISR(void)
{
if (some_key_pressed)
{
RTCMOD = 0x01; // set period 10ms
RTCSC = 0x0B; // Disable RTIE RTCSC=0x0F 1s
key_press_debounced = yes;
}
RTCSC_RTIF = 1; // clear flag
}
/******************************* ADC ISR ***********************************/
interrupt VectorNumber_Vadc void ADC_ISR(void) {
word adc_val;
adc_val = (word) (ADCRH<<8); // Read ADC value, clear flag
adc_val |= (word) (ADCRL); // 8-bit, ignore high byte
TPM3Cx_PWM(0,(byte)(((0xFFFF-adc_val)&0x00FF)>>1),666,0x06);
TPM3Cx_PWM(5,(byte)((adc_val&0x00FF)>>1),666,0x06);
}
byte LastKeyPressed() // get the key pressed
{
byte tempA,tempD;
tempA = PTAD;
tempD = PTDD;
if ((tempA&0x04)==0x00)
{
return PTA2;
}
if((tempA&0x08)==0x00)
{
return PTA3;
}
if ((tempD&0x04)==0x00)
{
return PTD2;
}
if ((tempD&0x08)==0x00)
{
return PTD3;
}
return no;
}
byte KeyPressed()
{
if(some_key_pressed&&key_press_debounced )
{
return yes;
}
else
{
return no;
}
}
void KeyReset()
{
some_key_pressed = no;
key_press_debounced = no;
KBI1SC_KBIE = 1; // enable KBI1 interrupts
KBI2SC_KBIE = 1; // enable KBI2 interrupts
}
static void MyTask1 (void *p_arg )
{
(void)p_arg;
for(;;)
{
LED_On(1);
OSTimeDlyHMSM(0,0,2,0);
LED_Off(1);
OSTimeDlyHMSM(0,0,2,0);
LED_On(1);
OSTimeDlyHMSM(0,0,2,0);
LED_Off(1);
OSTimeDlyHMSM(0,0,2,0);
} //end for loop
} //end task
static void MyTask2 (void *p_arg)
{
(void)p_arg;
for (;;) {
LED_Off(0);
LED_On(3);
LED_On(4);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_Off(3);
LED_Off(4);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_On(3);
LED_On(4);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_Off(3);
LED_Off(4);
OSTimeDlyHMSM(0, 0, 0, 420);
}
}
static void MyTask3 (void *p_arg)
{
(void)p_arg;
for (;;)
{
LED_Off(0);
LED_On(6);
LED_On(7);
LED_On(8);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_Off(6);
LED_Off(7);
LED_Off(8);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_On(6);
LED_On(7);
LED_On(8);
OSTimeDlyHMSM(0, 0, 0, 420);
LED_Off(6);
LED_Off(7);
LED_Off(8);
OSTimeDlyHMSM(0, 0, 0,420);
} //for loop end
} //end Task3
/*static void MyTask4 (void *p_arg)
{
byte i,j,t;
byte tempA;
byte tempD;
for (;;)
{
LED_Off(0);
LED_On(7);
LED_On(8);
OSTimeDlyHMSM(0, 0, 0, 220);
LED_Off(7);
LED_Off(8);
OSTimeDlyHMSM(0, 0, 0, 220);
LED_On(7);
LED_On(8);
OSTimeDlyHMSM(0, 0, 0,220);
LED_Off(7);
LED_Off(8);
OSTimeDlyHMSM(0, 0, 0, 220);
} //for loop end
} //end Task3 */
void main (void)
{
InitSystems();
EnablePullups();
InitKBI();
BSP_Init();
OSInit();
/* Initialize "uC/OS-II, The Real-Time Kernel" */
OSTaskCreate(MyTask1, /* Create the first task */
(void *)0,
(OS_STK *)&MyTask1STK[MyTask1_STK_SIZE - 1],
MyTask1_PRIO);
OSTaskCreate( MyTask2, /* Create the second task */
(void *)0,
(OS_STK *)&MyTask2STK[MyTask2_STK_SIZE - 1],
MyTask2_PRIO);
OSTaskCreate( MyTask3, /* Create the third task */
(void *)0,
(OS_STK *)&MyTask3STK[MyTask3_STK_SIZE - 1],
MyTask3_PRIO );
//OSTaskCreate( MyTask4, /* Create the third task */
//(void *)0,
//(OS_STK *)&MyTask3STK[MyTask4_STK_SIZE - 1],
//MyTask4_PRIO );
OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -