你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

LPUART的低功耗模式到底怎么使用

[复制链接]
FelixJiang 提问时间:2018-6-10 16:56 /
本帖最后由 knifeflying 于 2018-6-10 17:07 编辑

折腾了好长时间的LPUART,怎么还是不能成功呢。
我希望进入到stop2模式后,接收到任何一个字符,就唤醒,执行中断处理函数和callback函数,执行完之后,就再次进入stop2模式。但是在callback函数中,获得的字符总是错的。
应该怎样设置才正确呢?

我的代码,主函数中进入sotp模式之前:
  1.   WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_READDATA_NONEMPTY;
  2.   if (HAL_UARTEx_StopModeWakeUpSourceConfig(&hlpuart1, WakeUpSelection)!= HAL_OK)
  3.   {
  4.     Error_Handler();
  5.   }
  6.   
  7.   /* Enable the LPUART Wake UP from STOP mode Interrupt */
  8.   __HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_WUF);
  9.   /* enable MCU wake-up by LPUART */
  10.   HAL_UARTEx_EnableStopMode(&hlpuart1);
  11.   
  12.   HAL_PWR_EnableSleepOnExit();
  13.   
  14.   /* enter STOP mode */
  15.   HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
复制代码


中断处理函数:
  1. void LPUART1_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN LPUART1_IRQn 0 */
  4.   
  5.   /* Check WUF flag value in ISR register */
  6.   if(LL_LPUART_IsActiveFlag_WKUP(LPUART1) && LL_LPUART_IsEnabledIT_WKUP(LPUART1))
  7.   {
  8.     /* Configure LPUART1 transfer interrupts : */
  9.     /* WUF flag clearing */
  10.     LL_LPUART_ClearFlag_WKUP(LPUART1);
  11.    
  12.     /* Call function in charge of handling Character reception */
  13.     LPUART_CharReception_Callback();
  14.   }
  15.   else
  16.   {
  17.     /* Call Error function */
  18.     Error_Callback();
  19.   }
复制代码


callback函数:
  1. void LPUART_CharReception_Callback(void)
  2. {
  3.   /* Read Received character. RXNE flag is cleared by reading of RDR register */
  4.   putchar(LL_LPUART_ReceiveData8(LPUART1));
  5.   HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
  6. }
复制代码


收藏 1 评论5 发布时间:2018-6-10 16:56

举报

5个回答
feixiang20 回答时间:2018-6-11 03:06:55
能帮你的就是推荐你去看看资料
【低功耗模式下使用UART唤醒Kinetis L系列】
【32位机如何用UART做低功耗模式转换】
【新手求助,如何通过UART使MCU进入低功耗模式】
七哥 回答时间:2018-6-15 09:12:34
首先不知道你用的是什么芯片,两次STOP2是哪种模式,在这种模式时LPUART的时钟从哪来的,起不起作用。
如果LPUART的时钟没有的话,是不能接收数据的。
因为一般来说UART的接收管脚,同时可以作为中断输入来唤醒MCU的,那么只需要检测RX管脚上的一个下降沿即可认为是有唤醒信号。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

馒头弟 回答时间:2018-6-15 11:35:20
干脆吧工程发上来,看看配置
wolfgang 回答时间:2018-6-15 16:02:53
低功耗恢复后要重新设置 系统时钟频率,不然会影响串口的时钟波特率的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

creep 回答时间:2019-5-1 18:16:42
【实战经验】LPUART唤醒STOP MODE下的MCU
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=611266&highlight=lpuart
(出处: 论坛-意法半导体STM32/STM8技术社区)

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版