在LPC2214下,要把数据写入FLASH,如果没有系统裸奔的话,直接调用iap_entry()就能操作。
后来我加入ucos系统,发现一执行这个操作就复位(我加了看门狗),这是什么情况,哪位大神解释一下?
下面附上我的代码:
裸奔情况,执行正确:
//关中断
__asm{MSR CPSR_c, #0xdf};
uint32 ReadParID(void)
{
uint32 paramin[5];
uint32 paramout[2];
paramin[0] = 0x54; // 设置命令字,读器件ID
iap_entry(paramin, paramout); // 调用IAP服务程序
return(paramout[0]); // 返回状态码
}
//开中断
__asm{MSR CPSR_c, #0x5f};
加入ucos系统:
OS_ENTER_CRITICAL();
uint32 ReadParID(void)
{
uint32 paramin[5];
uint32 paramout[2];
paramin[0] = 0x54; // 设置命令字,读器件ID
iap_entry(paramin, paramout); // 调用IAP服务程序,每次执行这一句,系统就复位。。。
return(paramout[0]); // 返回状态码
}
OS_EXIT_CRITICAL();
|