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

STM32F042F6 串口空休中断,DMA发送与接收异常

[复制链接]
bobby_2020 提问时间:2019-9-25 19:49 /
各位大师你们好,使用STM32CubeMX新建STM32F042F6 串口空休中断,DMA发送与接收,停机模式下,看门狗唤醒后,串口有时接收不到数据或不发送数据;请师指点,谢谢!
void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 9600;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }

}


recv_end_flag = HAL_UART_Transmit_DMA(&huart1,&Eppprom.EditReg.regByte.ID ,Eppprom.EditReg.regByte.len+1);
recv_flag = HAL_UART_Receive_DMA(&huart1,&rx_buffer[0],DEF_BUFFER_RX_SIZE);

收藏 评论1 发布时间:2019-9-25 19:49

举报

1个回答
Dandjinh 回答时间:2019-9-30 09:44:16
退出停止模式后,其他时钟还是保持原来的配置(以外部高速时钟HSE不分频作为PLL时钟源,再经过9倍频得到,即72MHz,然后PLL作为系统时钟源,系统时钟一分频得到AHB总线时钟,AHB再 一分频作为高速总线时钟PCLK2,也就是72MHz,USART1用的就是高速总线时钟),这些配置是不会变的,但是退出停止模式后,内部高速时钟(HSI)默认变成了系统时钟源,造成时钟紊乱。

【其实不仅仅是串口,其他在进入停止模式之前的外设在退出停止模式之后都会工作不正常,重新配置系统时钟即可】
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版