在使用stm32f030f4芯片時,用到串口和內部flash讀寫。無論串口(中斷方式和查詢方式)還是flash讀寫,在單獨使用時都沒有問題。可一旦兩者一起使用,便會出現芯片卡死現象。
通過測試發現,一旦出現卡死現象,就無法完成flash擦除函數,因此首先推斷是在flash擦除函數FLASH_ErasePage(Erase_FlashAddr)內部出現死機現象,在進入該函數內部后,發現沒有任何語句會產生死機,與此發現推斷錯誤。
突然想到flash操作需要一定的時間完成,如果有中斷不停的產生,也會出現卡機現象,而且flash操作也將無法進行。于是開始檢查是否有相關中斷沒有關閉。
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上面,而這個是沒有效果的。
上一篇:STM32入門學習之USART中斷(STM32F030F4P6基于CooCox IDE)
下一篇:STM32F030 中斷太頻繁導致死機
推薦閱讀
史海拾趣
為了進一步提升公司的競爭力,ERGOBAHCO公司開始積極拓展國際市場。公司組建了一支專業的國際業務團隊,參加了多場國際展會,并與多家國際知名企業建立了合作關系。通過不斷努力,ERGOBAHCO公司的產品成功打入了歐美、東南亞等國家和地區的市場,公司的國際化程度得到了顯著提升。
品質是Ametherm公司的生命線。他們建立了嚴格的質量管理體系,從原材料采購到產品出廠的每一個環節都進行嚴格把控。同時,公司還注重持續改進,通過引入先進的生產設備和技術手段,提高生產效率和產品質量。這些努力使得Ametherm的產品在市場上具有很高的競爭力。
成為Garmin全資子公司后,Dynastream并沒有停止前進的步伐。相反,公司更加注重技術創新和產品研發。在保持傳統優勢產品的基礎上,Dynastream不斷推出新產品、新技術,以滿足市場的不斷變化和客戶的多樣化需求。同時,公司還積極拓展國際市場,將產品銷往全球各地。
武漢弘芯半導體制造有限公司(HSMC)于2017年11月在武漢市東西湖區臨空港經濟技術開發區正式成立。公司自成立之初便立下了宏偉的愿景——成為全球領先的CIDM(委托代工與芯片設計整合制造)晶圓廠之一。HSMC匯聚了來自全球半導體晶圓研發與制造領域的頂尖專家團隊,致力于集成電路產業先進晶圓與封裝制造技術的自主化,為我國電子科技業與芯片設計業貢獻力量。
隨著大飛機項目的立項,中國的航空事業掀開了嶄新的一頁。民用航空產品要投入運營,就必須取得適航當局頒發的適航證。 RTCA/DO-254《機載電子設備設計保障指南》是美國聯邦航空局(FAA)、歐洲航空安全局(EASA)、中 ...… 查看全部問答∨ |
|
哪位好心人有請幫幫忙呀! MP4 codec只做測試用,非商業用途! Email:lovelife_821106@163.com… 查看全部問答∨ |
定義了一個數組 xdata unsigned char ComInit[17]=0x02,0x00,0x11,0x03,0xAA,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xB9,0x03}; 每秒發送一次給PC機 sendString(ComInit, 17); //發送函數 本來一切都正常,后來工程中 ...… 查看全部問答∨ |
從大三開始一直在學習嵌入式LINUX,但是這學期開始就忙著找工作和其他的一些事情,所以就沒怎么弄了,準備寒假好好復習一下知識,包括2440的裸機程序,初步定為用KEILL開發,因為ADS著實有些太老了;嵌入式LINUX的應用程序,嵌入式LINUX的內核開發 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 【搶樓】正式開始!來搶TI LM3S811評估板吧!!!
- LYTSwitch-1 LED驅動器 天生小體積,應用高效率,圍觀有好禮!
- 【搶樓有禮】聊聊vishay照明應用在我們身邊哪些地方!
- TI MCU 常見問題(FAQ)大搜集
- 你有原創,我有豪禮!(原創精選評選第7期)
- 與未來同行-是德科技創新技術峰會·北京
- 更好的你我,更好的EEWorld!2020年終慶典
- 下載MPS汽車電機控制技術干貨,贏【Keep體脂秤、自動洗手機套裝、小米保溫杯】,開啟汽車技術進階之旅!
- 【已結束】PI 直播【適合工業市場輔助電源的碳化硅和氮化鎵 IC】(9:30入場)
- BeagleBone Black 開發板 DIY 創意設計大賽