void eint3Isr (void)
{
IO0IntEnf =IO0IntEnf&(~ad7190_data_out); /* P0.17下降沿中断禁止*/
delay_nus(1);
if(0x00000000==(FIO0PIN&0x00020000))
{
read_from_ad7190(3,ad_new_buffer);
ad_new_data=ad_new_buffer[2]<<16|ad_new_buffer[1]<<8|ad_new_buffer[0];
OSMboxPost(SampleMbox,&ad_new_data);
}
IO0IntEnf = ad7190_data_out; /* P0.17下降沿中断使能 */
IO0IntClr = ad7190_data_out; //中断标志清零
}
只要在上面的程序中加入OSMboxPost(SampleMbox,&ad_new_data);
时,程序运行时出现异常,进入下面的while (1);
void defaultVectorHandle (void)
{
#ifdef DEBUG
while (1);
#else
zyReset(ZY_HARD_RESET);
#endif /* DEBUG */
}
但在别的任务中调用OSMboxPost(SampleMbox,&ad_new_data);时正常运行,哪位高人能指点一下? |