本帖最后由 cjseng 于 2016-3-22 18:01 编辑
前些日子用STC15W408AS做个小东西,需要用到串口通讯,发现一个问题:当开启空闲模式后(PCON|=0x01),串口中断不能响应,就是说,一旦进入空闲模式,串口中断不能唤醒。
这个问题令我非常困惑,因为之前用其它厂家的,包括STC12系列的,这种用法都没有问题。
我就打电话给STC的工程师,对方直接跟我说:你的程序有问题,至于什么问题,没空给你排查,你可以参考datasheet上的示例程序。
后来,我把程序其它部分都干掉,只留下初始化和串口中断,同样的,还是不能响应,但是,只要把主函数里PCON|=0x01去掉,就一切正常了。
我再打电话给STC的技术支持,要求对方确认这个问题,对方表示不可能有这样的问题。他说,他测试过1200-115200波特率的通讯,都没有问题。
不过,过了半个小时,对方打电话给我了,说确实存在这个BUG。STC15系列,除了15W204S没这个问题,其它型号都存在此问题。
过了几分钟,又给我打电话,说可以在PCON|=0x01后加一个nop指令,就可以解决问题。我问这是何道理,对方说,芯片内部设计就是这样的。 |