天线|RF射频
直播中

潘晓明

7年用户 197经验值
私信 关注
[问答]

在原子ENC28J60+LWIP上把ucosii换成ucosiii后程序卡死该怎么办?

在原子ENC28J60+LWIP带操作系统的基础上,把ucosii换成ucosiii后,刚开始能够ping通网络,持续ping一段时间,程序就会卡死,DEBUG发现一直在外部中断里面出不来
里面出不来,量ENC28J60的INT脚电压,一直是2点多伏,没有变化,串口有打印消息
请问是什么问题

回帖(2)

孙丽萍

2019-9-12 08:44:19
UCOSIII有两种临界段保护方式:一种是和UCOSII一样的直接关闭中断,另外一种是关闭任务调度器。采用关闭任务调度器的方式来关闭实现临界段代码保护的话系统时钟不会受影响,但是因为没有关闭中断,所以systick中断会一直产生,有些临界段代码不能被中断打断的话此时就会有影响。比如你现在做的这个LWIP试验,此时就只能使用第一种方法了,直接关闭中断。
举报

孙丽萍

2019-9-12 09:07:18
对比了探索者UCOSIII移植LWIP的代码,发现UCOSIII的配置有些不一样,“#define OS_CFG_ISR_POST_DEFERRED_EN     0u   /* Enable (1) or Disable (0) Deferred ISR posts 通过调度器上锁来访问临界段*/“将这里改成直接发布模式以后就好啦,请问是什么原因?@zuozhongkai
举报

更多回帖

发帖
×
20
完善资料,
赚取积分