各位大神,有没有人在MSP430F149上移植过UCOSII并且用它写过中断函数,我现在想在移植后的操作系统里面写开门狗的中断服务程序,会的人能不能教教我。这是我创建的一个任务并且写的中断函数,但是不行,能不能帮我看看是什么问题。
void task3(void *pdata)
{
pdata = pdata; /* 无任何意义,防止编译器报警 */
WDTCTL = WDT_MDLY_32; /* 设置时钟节拍间隔为32ms */
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL = WDT_MDLY_32; // 设置内部看门狗工作在定时器模式,1000ms中断一次
IE1 |= WD
tiE; // 使能看门狗中断
P6DIR |= BIT2;P6OUT |= BIT2; //打开数码管,关闭流水灯和电平转换
P4DIR = 0xff; //设置P4,P5的IO方向为输出
P5DIR = 0xff;
P4OUT = 0x00; //设置P4,P5的输出初值
wei_h;
wei_l;
P5OUT = 0xff;
_BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P4OUT = scandata[cnt]; //输出段选信号
duan_h;
duan_l;
P4OUT = 0x00; //设置P4,P5的输出初值
wei_h;
wei_l;
cnt++; //位计数变量在0~5之间循环
if(cnt == 16)
cnt = 0;
}
}
一周热门 更多>