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

stm32l011k4 uart 在stop 模式下无法唤醒

[复制链接]
祉优_q 提问时间:2017-5-5 19:17 /
是直接用库里的demo来测的 一个都唤不醒,急啊!!!
收藏 2 评论23 发布时间:2017-5-5 19:17

举报

23个回答
祉优_q 回答时间:2017-6-3 15:16:46
安 发表于 2017-5-24 10:45
唤醒方式在手册里面写了。

可以的。en.DM00355687这个文件里有提到可以到stop下唤醒。且en.stm32cubel0的例程里有UART_WakeUpFromStop的代码。我是直接跑的,但就是唤醒不了!!不知道错在哪里!!
22.png

以下是官方的例程:
   /* make sure that no UART transfer is on-going */
   while(__HAL_UART_GET_FLAG(&UartHandle, USART_ISR_BUSY) == SET);
   /* make sure that UART is ready to receive
   * (test carried out again later in HAL_UARTEx_StopModeWakeUpSourceConfig) */   
   while(__HAL_UART_GET_FLAG(&UartHandle, USART_ISR_REACK) == RESET);

  /* set the wake-up event:
   * specify wake-up on RXNE flag */
  WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_READDATA_NONEMPTY;
  if (HAL_UARTEx_StopModeWakeUpSourceConfig(&UartHandle, WakeUpSelection)!= HAL_OK)
  {
    Error_Handler();
  }

  /* Enable the UART Wake UP from stop mode Interrupt */
  __HAL_UART_ENABLE_IT(&UartHandle, UART_IT_WUF);

  /* about to enter stop mode: switch off LED */
  __HAL_RCC_PWR_CLK_ENABLE();
  /* enable MCU wake-up by UART */
  HAL_UARTEx_EnableStopMode(&UartHandle);
  /* enter stop mode */
        BSP_LED_Off(LED3);
  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

  /* ... STOP mode ... */  

  SystemClock_Config();
  /* at that point, MCU has been awoken: the LED has been turned back on */
  /* Wake Up based on RXNE flag successful */
        BSP_LED_On(LED3);
  HAL_UARTEx_DisableStopMode(&UartHandle);

  /* wait for some delay */
  HAL_Delay(1000);
  /* Inform other board that wake up is successful */
  if (HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer1, COUNTOF(aTxBuffer1)-1, 5000)!= HAL_OK)  
  {
    Error_Handler();
  }  
        HAL_Delay(1000);
  BSP_LED_Off(LED3);
  /*##-2- Wake Up second step  ###############################################*/
  /* make sure that no UART transfer is on-going */
  while(__HAL_UART_GET_FLAG(&UartHandle, USART_ISR_BUSY) == SET);
  /* make sure that UART is ready to receive
   * (test carried out again later in HAL_UARTEx_StopModeWakeUpSourceConfig) */   
  while(__HAL_UART_GET_FLAG(&UartHandle, USART_ISR_REACK) == RESET);

  /* set the wake-up event:
   * specify wake-up on start-bit detection */
  WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_STARTBIT;
  if (HAL_UARTEx_StopModeWakeUpSourceConfig(&UartHandle, WakeUpSelection)!= HAL_OK)
  {
    Error_Handler();
  }

  /* Enable the UART Wake UP from stop mode Interrupt */
  __HAL_UART_ENABLE_IT(&UartHandle, UART_IT_WUF);

  /* about to enter stop mode: switch off LED */
  BSP_LED_Off(LED3);
  /* enable MCU wake-up by UART */
  HAL_UARTEx_EnableStopMode(&UartHandle);
  /* enter stop mode */
  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

  /* ... STOP mode ... */

  /* at that point, MCU has been awoken: the LED has been turned back on */
  /* Wake Up on start bit detection successful */
  HAL_UARTEx_DisableStopMode(&UartHandle);
  /* wait for some delay */
  HAL_Delay(100);
  /* Inform other board that wake up is successful */
  if (HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer2, COUNTOF(aTxBuffer2)-1, 5000)!= HAL_OK)  
  {
    Error_Handler();
  }   


我是笨鸟我先飞 回答时间:2017-8-3 16:28:10
本帖最后由 我是笨鸟我先飞 于 2017-8-3 16:29 编辑

刚好我也在调这个程序  我用的是L452,Dome应该类似吧  我的Dome是需要两块板子   不过有一块是不需要进低功耗的,所以 可以用电脑串口助手代替,不过唤醒时 发送 的内容有要求。  还有就是 我换个串口 想用其他串口唤醒 就不行  只有UART4才能唤醒   感觉  ST低功耗这方面的做的不好  提供的支持也不足,PDF讲的太笼统
祉优_q 回答时间:2017-6-3 15:00:52
waiman-156411 发表于 2017-5-24 10:36
stop 模式UART是无法唤醒。
但你可以在进入STOP模式之前,把RX脚设置成IO中断唤醒就可以了。
当然,会丢失 ...

改IO中断 没意思,uart在stop下手册上写有可以唤醒的。这才是这个片子的特性
祉优_q 回答时间:2017-5-5 19:21:50
怀疑是demo都有问题。有人有可用的代码吗?
祉优_q 回答时间:2017-5-5 23:26:05
我是用一个开发板与电脑测的  不知道是不是要两个stm32l011才可以啊!!有没有人知道啊?
无薪税绵 回答时间:2017-5-24 09:43:54
demo不可能有问题的。

会不会是PC端的唤醒命令有问题。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

peter001 回答时间:2017-5-24 10:03:05
学习一下
废鱼 回答时间:2017-5-24 10:22:24
楼主用的是哪种方式进行的STOP。看一下进入STOP的代码。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

waiman 回答时间:2017-5-24 10:36:28
stop 模式UART是无法唤醒。
但你可以在进入STOP模式之前,把RX脚设置成IO中断唤醒就可以了。
当然,会丢失串口的开始的几个数据。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

废鱼 回答时间:2017-5-24 10:45:18
唤醒方式在手册里面写了。
1.png
wanyisq 回答时间:2017-5-24 10:51:37
stop下好像串口无法唤醒
我做过进入stop前把串口设置为中断,缺点就是需要一段唤醒码

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

wanyisq 回答时间:2017-5-24 10:52:34
stop时可以alarm唤醒 要关联17  是不是uart也要关联某个线
JeffJiang 回答时间:2017-5-24 11:33:44
帮顶,留意
Dandjinh 回答时间:2017-5-24 13:38:35
先把串口还原成普通IO,然后把RX设置中断,不就可以唤醒了嘛

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xmshao 回答时间:2017-5-24 17:42:01
不同的休眠模式能能被什么唤醒,ST MCU参考手册上都明确写出来了的。
这里的32L011,STOP模式下可以被USART1/USART2/LPUART1唤醒,不过还要与
相应的EXTI中断线配置起来。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

chen000000009 回答时间:2017-5-25 14:26:32
唤醒命令是查手册的吗
12下一页

所属标签

相似问题

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