当前位置: 首页 > news >正文

关于STM32L051单片机(Stop)休眠唤醒后初始化USART2,单片机死机问题

1.环境介绍

        单片机:STM32L051C8Tx

        工作模式:Stop休眠模式

        唤醒:Lora模组接收数据中断唤醒

2.问题描述

        休眠后,通过lora网关测试,一直发送查询命令,查询结束立刻进入休眠模式,过不定长时间后(测试大概1~2分钟)单片机死机,电流持续在14mA左右;

3.问题定位

        通过打印定位:在"MX_USART2_UART_Init"初始化USART2死机,初始化波特率115200,但是修改为9600就正常了;

4.问题分析

根本原因是时钟系统恢复不完整外设状态冲突的综合表现。下述是搜索到的相关解释:

5.预防措施总结

5.1 唤醒后立即切换时钟

从MSI切换到HSI或PLL,确保时钟频率足够高;

PS:但是我程序中唤醒后逻辑上是立马重新初始化系统时钟,时钟源是HSI,所以还真不清楚为啥使用115200bsp还会有问题;

5.2 波特率安全计算

添加最小时钟检查,实现自动波特率降级;

 // 安全的函数
```c
// 安全的波特率设置函数
HAL_StatusTypeDef Safe_UART_SetBaudRate(UART_HandleTypeDef *huart, uint32_t BaudRate)
{uint32_t clock_freq = HAL_RCC_GetPCLK1Freq();uint32_t min_clock = 16 * BaudRate;  // USART要求的最小时钟// 检查时钟是否足够 // 检查时钟是否足够if(clock_freq <if(clock_freq < min_clock) {// 计算最大可用波特率uint32_t max_baud = clock_freq / 16;LOG_E("Clock too low! Max baud: %lu", max_baud);return HAL_ERROR;}// 精确计算BRR(带四舍五入)uint四舍五入)uint32_t div = (clock_f32_t div = (clock_freq + (BaudRate / 2)) / BaudRate;huart->Instance->BRR = div;return HAL_OK;
}// 在初始化中调用
if(Safe_UART_SetBaudRate(&huart2, 115200) != HAL_OK) {// 降级到安全波特率Safe_UART_SetBaudRate(&huart2, 9600);
}

5.3 外设完全复位

__HAL_RCC_USART2_FORCE_RESET();

__HAL_RCC_USART2_RELEASE_RESET();

5.4 错误处理机制

添加BRR值合法性检查;

强化HardFault处理;

http://www.dtcms.com/a/478780.html

相关文章:

  • 做网站的一些好处科技类网站简介怎么做
  • xgboost参数含义以及应付金融数据中的类别不平衡的套路
  • 养殖类网站模板建筑设计网站排行榜
  • Cursor 对话技巧 【Prompt 模板与全局通用规则】
  • 按键控制LED灯
  • 打工人日报#202510012
  • 网站备案 做网站东莞有互联网企业吗
  • 涪城移动网站建设如何自己学建设网站
  • codeforces round1057(div2)AB题解
  • 【ADS】【python基础】jupyter notebook环境极简搭建
  • 【办公类-115-05】20250920职称资料上传04——PDF和PDF合并PDF、图片和PDF合并PDF(十三五PDF+十四五图片)
  • MySQL分库分表方案及优缺点分析
  • 存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
  • 星外网站开发苏州网络推广
  • 怎么做网站横幅建设工程协会网站查询系统
  • 1NumPy 常用代码示例
  • 【工业场景】用YOLOv8实现行人识别
  • 新手玩Go协程的一些小坑
  • STM32的VDD和VSS,VDDA和VSSA,REF+与REF-。
  • 基于STM32的智能门禁系统(论文+源码)
  • 新乡网站建设价格怎么做网站模块
  • 中小企业建设网站补贴企业网站推广的重要性
  • 信息比率诊断工具开发量化评估ETF网格择时能力有效性
  • 栏位索引超过许可范围:4,栏位数:3。; nested exception is org.postgresql.util.PSQLException
  • 厦门网站建设哪家强徐州58同城网
  • 如何进行新产品的推广网站seo技术
  • Dioxus状态管理
  • 微调高级推理大模型(COT)的综合指南:从理论到实践
  • 做美食分享网站源码wordpress网址一大串
  • 深圳做网站的人百度竞价点击软件奔奔