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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版