历史上的今天
返回首页

历史上的今天

今天是:2025年07月10日(星期四)

正在发生

2018年07月10日 | stm32f030串口与flash读写一起使用时发生卡机现象

2018-07-10 来源:eefocus

   在使用stm32f030f4芯片时,用到串口和内部flash读写。无论串口(中断方式和查询方式)还是flash读写,在单独使用时都没有问题。可一旦两者一起使用,便会出现芯片卡死现象。

   通过测试发现,一旦出现卡死现象,就无法完成flash擦除函数,因此首先推断是在flash擦除函数FLASH_ErasePage(Erase_FlashAddr)内部出现死机现象,在进入该函数内部后,发现没有任何语句会产生死机,与此发现推断错误。

   突然想到flash操作需要一定的时间完成,如果有中断不停的产生,也会出现卡机现象,而且flash操作也将无法进行。于是开始检查是否有相关中断没有关闭。

      终于发现下面这个USART1->ISR寄存器中的ORE位: 

Bit 3 ORE: Overrun error
    This bit is set by hardware when the data currently being received in the shift register is
ready to be transferred into the RDR register while RXNE=1. It is cleared by a software,
writing 1 to the ORECF, in the USARTx_ICR register.
 An interrupt is generated if RXNEIE=1 or EIE = 1 in the USARTx_CR1 register.
 0: No overrun error
 1: Overrun error is detected
 Note: When this bit is set, the RDR register content is not lost but the shift register is
 overwritten. An interrupt is generated if the ORE flag is set during multibuffer
communication if the EIE bit is set.
 This bit is permanently forced to 0 (no overrun detection) when the OVRDIS bit is set in
the USARTx_CR3 register. 

 通过上面红色字体我们可以发现,当RXNEIE = 1 OR EIE =1时,会只要出现Overrun情况,就能产生一个中断!刚好串口接收中断开启条件符合!也就是说当我们开启串口接收中断后, 只要出现Overrun现象,就会产生一个ORE中断,而其标志位OREVCF是通过software清0的,而这个标志位我并没有在程序中清0!这个就是问题所在。

  在中断中清除ORE标志位后,程序终于正常。

  在上面说明中可以注意到,通过置位OVERDIS标志位,就能强制清除ORE标志位。

  最后需要说明的是,ORE中断其实和RXNE中断是一样的,都是void USART1_IRQHandler(void);这个也是通过测试发现的。这也是为什么之前一开始没有怀疑中断卡死的情 况,因为最开始测试时发现每次都能进入到void USART1_IRQHandler(void)中,但没想到是那时进入的ORE中断,而不是RXNE中断产生的。

   最开始也测试到卡死时RXNEIE会被清零,所以很长时间一直纠结在重启RXNEIE上面,而这个是没有效果的。


推荐阅读

史海拾趣

BNS Solutions公司的发展小趣事

在电子行业的早期阶段,BNS Solutions公司凭借其敏锐的市场洞察力和技术创新能力,迅速崭露头角。公司团队针对当时市场上电子产品性能不足、用户体验不佳的问题,研发出了一系列高效能、易操作的电子设备。这些产品不仅满足了消费者对电子设备的基本需求,还通过独特的设计和功能赢得了市场的广泛认可。随着产品的热销,BNS Solutions公司的知名度逐渐提升,为后续的发展奠定了坚实的基础。

COILCRAFT公司的发展小趣事

COILCRAFT公司成立于1945年,是美国较早的磁性元件制造商。在创立初期,公司以生产高频电感器和变压器为主,凭借着卓越的技术和稳定的质量,逐渐在电子元器件市场中崭露头角。公司总部位于伊利诺伊州卡里,这个地理位置为其提供了便捷的物流和人才资源,为其后续的发展奠定了坚实的基础。

DAPAudio公司的发展小趣事

随着公司产品的不断成熟和市场的逐渐扩大,DAPAudio开始将目光投向国际市场。通过与国际知名品牌的合作和自身的市场拓展努力,DAPAudio的产品逐渐进入欧美等发达国家和地区的市场。在国际市场上,DAPAudio凭借其卓越的产品性能和优质的服务赢得了广泛的赞誉和认可。

Emerson Embedded Power公司的发展小趣事

面对日益严峻的环境问题,Emerson Embedded Power积极响应,将环保理念融入产品设计和生产过程中。该公司致力于开发节能、低碳的电源产品,帮助客户降低能源消耗和碳排放。同时,公司还积极推广绿色制造理念,推动整个电子行业的可持续发展。

远阳(FLYOUNG)公司的发展小趣事

国光新业在深耕国内市场的同时,也积极拓展海外市场。公司的电容器产品凭借其优异的性能与可靠的质量,赢得了国内外众多客户的信赖与好评。随着品牌影响力的不断提升,国光新业已成为电子元器件行业中的佼佼者。未来,公司将继续坚持创新驱动发展战略,不断提升产品与服务的品质与竞争力,致力于成为具有国际竞争力的电子元器件供应商。

Aeroflex Metelics / Hi-Rel Components公司的发展小趣事

为了提高生产效率与产品质量,国光新业积极引进并自主研发高效自动化生产线。公司投产了行业首条高效聚合物自动化生产线,并在此基础上不断进行技改迭代。这些生产线的建立,不仅大幅减少了人力成本,还显著提升了产品的生产效率与一致性。目前,公司正进行第三条全国产化技改技术攻关,旨在进一步提升生产线的智能化与自动化水平。

问答坊 | AI 解惑

射频技术加速3G应用

[摘要]  融合的需求对移动设备提出了前所未有的挑战,如果需要手持设备支持丰富的融合业务,除了强悍的处理器之外,还需要支持WLAN、UWB、Bluetooth、Zigbee、DVB-H、UMTS等诸多无线协议,这些协议用以支持移动通信、娱乐体验、计算应用的需求。 ...…

查看全部问答>

IC 封装术语详解

IC 封装术语详解…

查看全部问答>

Kontron 嵌入式模块

大家好,请问哪位又kontron的ETX-mg模块的相关资料啊,越详细越好,在此先谢了!…

查看全部问答>

单片机脉搏测量仪

本文介绍一种用单片机制作的脉搏测量仪,只要把手指放在传感器内,很快就可以精确测出每分钟脉搏数,测量的结果用三位数字显示出来。   一、电路工作原理   电路原理见附图。电路由传感器电路、信号放大和整形电路、单片机电路、数**显示电路 ...…

查看全部问答>

【FPGA问题讨论】多串口输入数据到FPGA,解析不稳定

目前,FPGA程序对外部多个串口的信号进行解析和数据处理,目前遇到问题,解析的数据总有端口出现随机错误。正常情况我们设计的是,对输入FPGA的多个串口信号进行并行的解析,然后把解析的数据进行处理。但现在由于资源紧张,多个串口信号进行轮流解 ...…

查看全部问答>

请问bsp生成后怎样变成可以下载的形式然后下载到目标板上。ppc860+vxworks5.4+tornado2.0

请问bsp生成后怎样变成可以下载的形式然后下载到目标板上。ppc860+vxworks5.4+tornado2.0 能说下详细过程么。谢谢!…

查看全部问答>

源码请教,关于Tab Ctrl 的多对话框共享从串口采集的数据,怎么实现啊?

现在有个项目,28号就要,很急,没实现Tab Ctrl 的多对话框共享从串口采集的数据,有四个对话框,每个对话框分别有很多的控件,要显示从串口采集来的数据,怎么样才能实现共享啊,请大家帮帮忙!!! 其中Tab Ctrl 的多对话框主要使用下面的方案5实 ...…

查看全部问答>

EVC下如何开发wifi程序

想要在EVC下开发wifi的程序,驱动PDA上的wifi功能传数据,该如何操作,请各位给点建议?…

查看全部问答>

【求助】关于18B20

我做了个DS18B20程序,单独时可以读出数据,但把它作为子程序时读出的为FF,请问怎么回事.时钟都是一样的.…

查看全部问答>