主要应用前后台程序结构来实现,前台程序是各种中断等突发事件,后台程序就是主循环,处理各种事件引起的各种任务.
#include "MSP430G2553.h"
int gTaskFlag=0; //任务标志 位
void sysInit()
{
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
sysInit(); //系统初始化
_EINT(); //开中断
while(1)
{
if((gTaskFlag&0x0001) == 0x0001)
{
Task0001_Name();
}
if((gTaskFlag&0x0002) == 0x0002)
{
Task0002_Name();
}
//----如果没有任务就休眠--------
if(gTaskFlag == 0x0000)
{
LPM3;
}
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer0_A0(void) //TACCR0中断
{
gTaskFlag |= 0x0001; //周期性任务
__low_power_mode_off_on_exit(); //唤醒CPU
}
void Task0001_Name()
{
//TODO
//---完成任务------
gTaskFlag &= ~0x0001;
}
void Task0002_Name()
{
//TODO
//---完成任务------
gTaskFlag &= ~0x0002;
}