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

stm32l011k4 uart 在stop 模式下无法唤醒

[复制链接]
祉优_q 提问时间:2017-5-5 19:17 /
阅读主题, 点击返回1楼
收藏 2 评论23 发布时间:2017-5-5 19:17
23个回答
开心/xin男孩 回答时间: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

查看全部评分

chen00000009 回答时间:2017-5-25 14:26:32
唤醒命令是查手册的吗
祉优_q 回答时间:2017-6-3 15:00:52
waiman-156411 发表于 2017-5-24 10:36
stop 模式UART是无法唤醒。
但你可以在进入STOP模式之前,把RX脚设置成IO中断唤醒就可以了。
当然,会丢失 ...

改IO中断 没意思,uart在stop下手册上写有可以唤醒的。这才是这个片子的特性
祉优_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();
  }   


祉优_q 回答时间:2017-6-3 15:20:47
无薪税绵 发表于 2017-5-24 09:43
demo不可能有问题的。

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

与命令无关噢
祉优_q 回答时间:2017-6-3 15:24:49
xmshao 发表于 2017-5-24 17:42
不同的休眠模式能能被什么唤醒,ST MCU参考手册上都明确写出来了的。
这里的32L011,STOP模式下可以被USART ...

可否提示下要怎么与exti中断线配置呢? 官方的demo没有看到啊。可否贴下代码?
回答时间:2017-6-5 08:58:54
我这没有这个芯片,楼主可以自己跑一下这个例程。
祉优_q 回答时间:2017-6-5 11:37:34
安 发表于 2017-6-5 08:58
我这没有这个芯片,楼主可以自己跑一下这个例程。

跑过啦! 其他例程没有问题。就是那个例程唤不醒!!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版