又能闻花香了

文章分享了两个STM32开发中遇到的问题及解决方法:1)FLASH编程偶发性失败,原因是编程宽度与电源电压不匹配,调整为单字节编程解决了问题;2)芯片偶发性死机,是由于UART接收溢出中断未正确处理,优化中断代码和优先级配置可避免死机。
摘要由CSDN通过智能技术生成

c100eba58223be49df529ee7655dd86d.jpeg

前不久,几乎举国上下在同一时间段内整齐划一地被感染了新冠。

很多人感染后都不同程度地出现味觉、嗅觉失灵的情形。本人也有相同经历。这几天,味觉恢复,嗅觉也在慢慢恢复中。既能闻到诱人的煎饼香,也能闻到清新的花香了。

今天在此分享两个STM32应用中的实战案例,权作提醒,以免重蹈覆辙。

案例1:

系统联机工作时,Flash编程偶发性失败

有人使用STM32F4系列芯片做开发,代码里涉及到FLASH编程。他发现FLASH编程过程中时不时地出现编程错误,即提示HAL_FLASH_ERROR_PGP错误。

他的产品系统有用到CAN通信。当他不将芯片做系统联机工作时不会发生该错误,只有在做整体联机测试时才可能发生编程异常。

起初,客户使用4字节编程模式,平常单独就flash编程功能测试也正常,整体联机运行时才可能出问题。后来,无意中尝试将FLASH单次编程宽度调整为1个字节后则异常消失。

那是为什么呢?

9e8829185d9c5943990d812b6254c7b4.png

其实,在做FLASH编程时,选择不同的编程宽度所需的芯片供电电压是不一样的。上面截图来自STM32F4系列参考手册。从图中不难看出,选择的编程宽度越宽,芯片所需供电电压越高。

若不运行其它功能,只是单独就芯片做flash编程,功耗需求相对较小、电源波动也小。当联机工作时,系统功耗、串扰都有所增大,电源波动也可能加剧,这时很可能出现电源难以保证支持4字节编程方式的稳定需求。由于单字节编程模式所需电源电压相对较低,在系统联机工作时,相同的电源条件下,即使电源有所波动,但完全可能依旧能提供满足单字节编程的稳定电压需求,因而不会出现因供电问题导致的编程异常。

案例 2:

芯片工作时偶发性出现死机现象

有人在做STM32芯片做产品开发,会偶发性地出现芯片进入死机状态的现象。

代码里有做FLASH编程操作,有UART的收发动作及相关中断,另外还开启了某定时器更新中断。经过测试发现,如果关闭定时器中断,FLASH编程、UART收发动作保持的情况下,则不会出现死机的现象。可是定时器中断怎么会导致芯片死机呢?感觉没有找到根本原因。后来,进一步跟踪调试发现,芯片出现死机,实际上是程序不停地进入UART接收中断。

用户代码里的确使能了UART收发中断,但在中断代码里程序实实在在有对接收非空标志【RXNE】做清零处理,不应该没完没了地进接收中断啊!经进一步确认,发生死机现象时总是对应着UART接收溢出事件【ORE】。哦,如果这样,当UART接收发生溢出时的确也会产生接收非空中断。下图为STM32 USART的各个中断请求事件及中断使能控制位。从下图可以看出,当使能RXNEIE时,RXNE和ORE事件都可产生接收中断。

5a3cd340929922195166f1ad9de18133.png

用户虽然在UART接收中断里有对RXNE标志清零,但当发生溢出事件而进入中断时,他并没有对ORE标志做检测及相应的清零操作。

63d90ff1084ae4e9979f02048e4dcac7.png

实际上,用户根本就没有意识到发生ORE事件时也可以产生接收中断,在其代码里根本没有对ORE标志进行检测,更没有对ORE标志做清零,导致UART接收中断没完没了的进入,感觉芯片犹如死机一般。

为什么关闭定时器中断能防止死机现象发生呢? 我们知道,UART接收产生溢出是因为数据接收到后不能及时取走才产生的,而定时器中断的存在,因为中断竞争的原因导致了UART接收中断的及时性受到影响,进而容易发生溢出。如果关闭定时器中断或或将UART接收中断的优先级配置成可以抢占定时器中断就可以避免UART接收不及时的问题,也就不会发生溢出。这样的话,即使用户的UART接收中断里没有对ORE事件的处理也无所谓。

当然,我们做UART的中断接收时,中断代码里最好加上对ORE事件的检测处理,当发生溢出事件时,及时对ORE事件标志清零。否则,万一发生溢出,就可能因ORE事件而发生没完没了进中断的问题,进而导致功能异常。

具体到本案例,再顺便提醒一点,除非片内FLASH采用双BANK结构,FLASH编程也是会影响中断响应的。即该操作也可能让UART的接收中断的响应因临时堵塞而发生接收溢出。

好,今天的分享到此打住。也愿这里的分享能给有需要的人带来一些帮助。

目前尚是冬季,大家注意防寒保暖并保证休息,以利新冠康复。如有咳嗽,除了使用适当药剂外,尽量避免说话,尤其是高声说话。

待到山花烂漫、绿柳如烟时,魑魅魍魉尽遁去。九州华夏重抖擞,东方旭日耀寰宇。~~~~~~一起加油!~~~~~

*************************************

往期话题阅读链接:

1、STM32 DMA编程时的一个应用小提醒

2、一段有关MPU配置代码的几个小疑问

3、话说STM32外设复位

4、CubeMx的初始配置顺序与DMA传输之提醒

5、关于SYSTICK延时函数的两个小疑问

7ffa1a32b7fca4769f5d33a5424a9638.png

非常感谢您使用我们的花香校园网页生成器,以下是您的网页: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>花香校园</title> <style> body { background-color: #F5DEB3; font-family: Arial, sans-serif; color: #333; margin: 0; padding: 0; } header { background-color: #FFEBCD; padding: 20px; text-align: center; font-size: 36px; } nav { background-color: #FFDAB9; padding: 10px; text-align: center; font-size: 20px; margin-bottom: 20px; } nav ul { list-style-type: none; margin: 0; padding: 0; display: flex; justify-content: center; } nav li { margin-right: 20px; } nav a { color: #333; text-decoration: none; } section { margin: 0 auto; padding: 20px; max-width: 800px; display: flex; flex-wrap: wrap; justify-content: space-between; } article { background-color: #FAFAD2; margin-bottom: 20px; padding: 20px; flex-basis: calc(33.33% - 20px); box-sizing: border-box; } h2 { font-size: 24px; margin-top: 0; } p { font-size: 16px; line-height: 1.5; } img { max-width: 100%; height: auto; margin-bottom: 10px; } footer { background-color: #FFDAB9; padding: 20px; text-align: center; font-size: 16px; } </style> </head> <body> <header>花香校园</header> <nav> <ul> <li><a href="#">关于我们</a></li> <li><a href="#">新闻动态</a></li> <li><a href="#">招生信息</a></li> <li><a href="#">联系我们</a></li> </ul> </nav> <section> <article> <img src="https://picsum.photos/400/300?random=1" alt="花香校园"> <h2>欢迎来到花香校园</h2> <p>花香校园是一所拥有百年历史的学校,我们致力于为学生提供最优质的教育,让学生在一个充满花香和文化氛围的校园里学习成长。</p> </article> <article> <img src="https://picsum.photos/400/300?random=2" alt="教学设施"> <h2>优秀的教学设施</h2> <p>我们拥有最先进的教学设施,包括多媒体教室、实验室、图书馆等,为学生提供最好的学习环境。</p> </article> <article> <img src="https://picsum.photos/400/300?random=3" alt="校园文化"> <h2>浓厚的校园文化</h2> <p>花香校园注重培养学生的文化素养,我们举办各种文化活动,如书法比赛、诗歌朗诵会等,让学生在活动中感受到浓厚的校园文化。</p> </article> <article> <img src="https://picsum.photos/400/300?random=4" alt="师资力量"> <h2>优秀的师资力量</h2> <p>我们拥有一支优秀的师资队伍,他们都是经验丰富、敬业爱生的教师,能够为学生提供最好的教育。</p> </article> <article> <img src="https://picsum.photos/400/300?random=5" alt="校园生活"> <h2>丰富多彩的校园生活</h2> <p>花香校园注重学生的全面发展,我们举办各种活动,如运动会、文艺晚会、志愿服务等,让学生在校园生活中得到充分的锻炼和发展。</p> </article> <article> <img src="https://picsum.photos/400/300?random=6" alt="合作交流"> <h2>广泛的合作交流</h2> <p>我们积极开展校际合作,与国内外多所高校进行交流,为学生提供更广阔的发展空间。</p> </article> </section> <footer>© 2021 花香校园</footer> </body> </html> ``` 该网页具有花香校园特色的颜色和排版,包括一个简单的导航栏、一个页面标题和六个内容区域。每个内容区域都包括一张图片、一个标题和一段描述文字。希望您喜欢这个网页,如有需要,随时可以联系我进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值