我需要实现的功能:干电池提供电源持续使用5年以上。外部接口只有3个,2个GPIO和1个USART。2个GPIO用于外部中断,USART用于和上位机通信。项目使用STM32CubeMX生成代码,模板选择的LL,干电池电压为3V,容量为1000mAh。STM32L010K8T6上电初始化,重要代码如下:
初始化完成立即进入STOP模式,代码如下:
请问上述代码是存在寄存器设置错误?如何让USART2在产生RXNE中断信号时唤醒MCU?谢谢! |
如需获得 STM32L010K8T6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!
泛泛来讲,STM32L0芯片的UART2是具备唤醒STOP模式的功能的,具体来说还有看具体的料号,在参考手册的 USART implementation 的一个表格里有描述。要不你换UART1试试,它是一定支持STOP唤醒的。
泛泛来讲,STM32L0芯片的UART2是具备唤醒STOP模式的功能的,具体来说还有看具体的料号,在参考手册的 USART ...
K8T6这款32PIN,没有引出LPUSART1引脚。
嗯,补充下。 我刚才看的参考手册还不是针对32L010的,STM32L010对应的参考手册是 RM0451. 刚看了下,STM32L010x8的 UART2 是 支持STOP唤醒的。 你现在使用LL库组织的代码,此刻没法一眼看出问题出在哪里。 可能要找相应的开发板做些调试验证后才知道。 你看看是否少了类似这样的函数: void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine); 这里UART 事件映射的中断线为26. 先基于手册做好确认,然后自己慢慢调试。
K8T6这款32PIN,没有引出LPUSART1引脚。
嗯,补充下。 我刚才看的参考手册还不是针对32L010的,STM32L010对应的参考手册是 RM0451. 刚看了下,STM32L010x8的 UART2 是 支持STOP唤醒的。 你现在使用LL库组织的代码,此刻没法一眼看出问题出在哪里。 可能要找相应的开发板做些调试验证后才知道。 你看看是否少了类似这样的函数: void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine); 这里UART 事件映射的中断线为26. 先基于手册做好确认,然后自己慢慢调试。
可以先测试一下,不进入低功耗,看看串口2能否工作。然后再缩小范围检查。
补充一下,要实现低功耗下UART2的唤醒,需要配置UART2的时钟为HSI或者LSE。系统默认的PCLK1的时钟是实现不了。建议使用LSE为UART2 详细说明请参考手册中相关章节 21.5.17 Wakeup from Stop mode using USART