[STM32F0] STM32F042 低功耗STOP模式的CAN唤醒问题

[复制链接]
3611|28
 楼主| zhanghqi 发表于 2021-8-14 15:21 | 显示全部楼层 |阅读模式
STM32F042在停止模式下,用HALL库,RTC和外部中断都可以唤醒。
用USART也可以在不丢数据的情况下唤醒。

有谁用过CAN唤醒,找不到资料呀。
只看到将CAN接收脚临时改成外部中断,唤醒后再恢复成CAN,这样当前CAN数据会丢失。
我需要每接收一帧数据就唤醒,再立马进STOP模式。
HALL库没找到象USART那样的唤醒函数。
 楼主| zhanghqi 发表于 2021-8-14 15:28 | 显示全部楼层
本帖最后由 zhanghqi 于 2021-8-14 15:30 编辑

有谁知道咋回事吗
zhenykun 发表于 2021-8-14 15:30 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| zhanghqi 发表于 2021-8-14 15:31 | 显示全部楼层
/* set the wake-up event:
   * specify wake-up on RXNE flag */
  WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_READDATA_NONEMPTY;        //;  //UART_WAKEUP_ON_STARTBIT
  if (HAL_UARTEx_StopModeWakeUpSourceConfig(&huart1, WakeUpSelection)!= HAL_OK)
  {
    //Error_Handler();
  }

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

  /* enable MCU wake-up by UART */
  HAL_UARTEx_EnableStopMode(&huart1);
  HAL_UART_Receive_IT(&huart1, aU1RxBuf, 1);
        
        //CAN
        //__HAL_CAN_ENABLE_IT(&hcan,CAN_IT_WKU);
        //HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);
        
        //MX_RTC_Init();
        HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);        //wake up1 »½ÐÑ
  /* Enter Stop Mode */
  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);        /////////

  /* Configures system clock after wake-up from STOP: enable HSI and PLL with HSI as source*/
  //SYSCLKConfig_STOP();
  SystemClock_Config();
zwll 发表于 2021-8-14 18:42 | 显示全部楼层
例子没有CAN的吧?
juventus9554 发表于 2021-8-14 18:43 | 显示全部楼层
CAN的熟练的人不多
 楼主| zhanghqi 发表于 2021-8-14 18:46 | 显示全部楼层
期待高手…………,HALL库是不是个半成品?好些驱动没有
lizye 发表于 2021-8-14 18:48 | 显示全部楼层
将一个GPIO口并在CAN RX上,专门用作CPU唤醒,减少管脚切换时间。
 楼主| zhanghqi 发表于 2021-8-14 18:50 | 显示全部楼层
 楼主| zhanghqi 发表于 2021-8-14 18:52 | 显示全部楼层
CAN第一帧数据只能唤醒CPU并且触发CAN错误中断,无**常接收到。
 楼主| zhanghqi 发表于 2021-8-14 18:54 | 显示全部楼层
见识了,无~法~正~常接收到都被屏蔽
zwll 发表于 2021-8-14 18:56 | 显示全部楼层
CAN总线错误之后,检测到CAN ERROR是超时以及未初始化,在初始化之后 清除错误,CAN总线还是异常 这个问题您解决了吗
pengf 发表于 2021-8-14 18:59 | 显示全部楼层
CAN 接收中断是可以从STOP唤醒的,我用过。
jiahy 发表于 2021-8-14 19:01 | 显示全部楼层
CAN初始化怎么做的
spark周 发表于 2021-8-14 19:02 | 显示全部楼层
您好,我也在调试stm32f042在stop模式下的can接收唤醒,您说的can中断唤醒不知道怎么做,方便指点下吗?

评论

你好,请问有调试出来吗?  发表于 2022-7-9 18:20
jiajs 发表于 2021-8-14 19:07 | 显示全部楼层
把CAN模式设置成自动唤醒模式就可以!AWUM位置1就可以!
 楼主| zhanghqi 发表于 2021-8-14 19:10 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
RunningX 发表于 2021-8-17 19:59 | 显示全部楼层
唤醒后第一帧数据不一定能收到吧,因为报文过来的时候,CAN还没初始化。但是因为CAN有重发机制,第一帧没有收到,就再发一帧,那就都好了
Dick Hou 发表于 2021-8-19 10:52 | 显示全部楼层
jiajs 发表于 2021-8-14 19:07
把CAN模式设置成自动唤醒模式就可以!AWUM位置1就可以!

那是SLEEP模式用的!楼主要STOP模式
隐去 发表于 2021-8-27 17:03 | 显示全部楼层
怎么做的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

11757

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部