在协议栈里,除了使用定时器定时唤醒串口之外,能不能在串口接收到数据之后立即将串口唤醒?
Viki Shi:
低功耗模式下晶振关闭,必须等定时器或者外部中断唤醒以后,重新开启晶振,然后才能使用串口
QIDONG LI:
回复 Viki Shi:
由于在低功耗模式下晶振关闭,必须等待定时器或者外部中断唤醒以后,重新开启晶振,然后才能使用串口;
可我在外部中断唤醒之后重新开启晶振,串口却仍然不能正常使用,或能使用,但大多数时候接收到的数据是乱码,根本接收不到想要的数据。
代码如下:
if(!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) //低电平触发SW6 { CLKCONCMD&=~ (1<<6); //选择32M外部晶振作为系统时钟源 CLKCONCMD&=~0x7; //设置系统时钟为32MHz while(CLKCONSTA & (1<<6)); //等待晶振稳定 }
由于项目必须要用到串口功能,因此基于这个问题调试代码调试了好几天,尝试了很多方法依然没有解决;
TI大神能不能给一个基于协议栈的在低功耗情况下使用串口功能的例子,或是给出具体的代码、例子。
Viki Shi:
回复 QIDONG LI:
请参考http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1中 UART (with power management) 这部分