changchangyuyu 发表于 2018-10-23 15:25:45

大神们急求助!!!!!STM8L051 active-halt RTC唤醒后

STM8L051 active-halt RTC睡眠唤醒后,为什么一直进不去USART RX接收中断函数INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28),串口向单片机发送数据一直没反应。
但是在睡眠之前,串口向单片机发送数据就可以进去“USART RX接收中断函数”
问各位大神,是否遇到过,,这种问题,是那块有冲突吗???


INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */

   USART_ClearITPendingBit (USART1,USART_IT_RXNE);//清中断标志
   USART_SendData8 (USART1,USART_ReceiveData8 (USART1));//将接收到的数据发送出去

   if(USART_ReceiveData8(USART1) !=0)
   {
   RTC_WakeUpCmd(ENABLE);
   GPIO_ResetBits(GPIOD,GPIO_Pin_0);//灯亮
   GPIO_ResetBits (GPIOB,GPIO_Pin_0);//开启 ADS1120
   halt();//进入ACTIVD-HALT模式
   }

}


536715119 发表于 2018-10-24 16:12:34

休眠时,串口中断是无法唤醒MCU,MCU只能通过外部中断或定时唤醒。怀疑是MCU在休眠中接收到数据。
如果确认MCU是已经唤醒了还是不行,尝试把休眠放到主程序中试试,不要在中断中执行

撑伞少年 发表于 2018-11-23 10:51:04

方法1:在休眠前设置串口RXD引脚的外部中断,下降沿唤醒,唤醒后马上配置串口进行数据接收;
方法2:采用外部中断加定时器中断通过模拟串口进行接收;
方法1缺点:功耗高,如果串口数据无前导唤醒数据,等待串口配置完成数据较短的话已经发送完成;优点:数据接收稳定准确率高;
方法2缺点:数据接收时应屏蔽其他中断信号,而且尽可能采用波特率较低的数据传输,否则数据接收错误率较高;有点:休眠时可随时唤醒,功耗低。
页: [1]
查看完整版本: 大神们急求助!!!!!STM8L051 active-halt RTC唤醒后