特殊功能寄存器WAKE_CLKO的第7位RXD_PIN_IE用于使串行接收引脚可触发掉电唤醒。
我今天就栽在这上面了。
系统初始化我就设置了WAKE_CLKO=0x40, 使能RXD掉电唤醒,结果串口数据接收就是不对,发送倒是没有任何错误。单片机接收到的主机数据乱七八糟,别说数据的正确率了,就连数据个数都不对。我换了几片12C5608和5410,症状一致,绝望之余,注释掉了WAKE_CLKO这句初始化,然后故障居然就排除了,为了让RXD可以唤醒掉电,就把这句放到了设置进入掉电模式的代码之前,掉电唤醒之后直接复位。
不知大家是否曾遇到该问题,正常运行阶段千万不能无端使能RXD_PIN_IE,需要进行此类操作就放到关机函数,不管唤醒之后是继续工作还是先复位,程序进入正常工作之前别让RXD_PIN_IE=1
这是我第二次遇到STC芯片的问题。上次是PCA定时器被int0引脚电平牵制,int0有波形的时候,PCA定时器就间断性歇菜,实在做不出来了,于是我就把PCA和T0对调,T0去完成定时精度较高的任务,PCA去做没有精度要求的定时,问题排除。
|