色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          STM32 USART中斷小程序

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          盡管網(wǎng)上的例程一堆堆,但還是花了好幾天時(shí)間才跑通了一個(gè)USART通過中斷方式實(shí)現(xiàn)的小程序。相當(dāng)無比地郁悶啊。記錄一下遇到的問題:

          本文引用地址:http://cafeforensic.com/article/201611/317053.htm

          1. 配置RCC的時(shí)機(jī)

          在主程序中通過查詢方式收發(fā)數(shù)據(jù)時(shí),結(jié)果并不穩(wěn)定。對(duì)比了ST提供的例程中的設(shè)置,將RCC配置提到了所有配置的最前面后,功能實(shí)現(xiàn)。結(jié)論:應(yīng)先配置RCC,再初始化其他外設(shè)。

          2. RAM下調(diào)試遇到的問題

          在上述查詢方式的基礎(chǔ)上,增加對(duì)NVIC的配置,USART的中斷設(shè)置,以及ISR中的處理過程,放到RAM下調(diào)試,無法進(jìn)入ISR。有以下兩個(gè)測試結(jié)果:1)在主程序while中調(diào)用USART_GetITStatus,判斷USART中斷事件是否發(fā)生及中斷是否使能,結(jié)果為SET。2)在調(diào)試時(shí)看NVIC的寄存器,USART1已經(jīng)enable了,說明寄存器已經(jīng)寫入。上述兩點(diǎn)結(jié)果下,程序從理論上應(yīng)該進(jìn)入中斷。百思不得其解之下,鬼使神差地把程序放到flash下,一切問題煙消云散,程序跑通,在ISR中處理了收發(fā)事件。

          flash和ram下程序的不同動(dòng)作,原因未知,做了如下一些對(duì)比(心疼我的flash?。?/p>

          T表示只設(shè)置了USART發(fā)送中斷,R表示只設(shè)置了USART接收中斷。可以看出,不是在FLASH的程序中是否設(shè)置過NVIC的問題。導(dǎo)致錯(cuò)誤的原因可能是flash下和ram下程序的固件庫版本不同。當(dāng)程序加載到flash或ram中后,系統(tǒng)是如何運(yùn)行程序的?兩者之間是否有干擾和影響?這點(diǎn)需要進(jìn)一步學(xué)習(xí)。

          3. 其他問題

          在做2中的試驗(yàn)時(shí),希望在flash內(nèi)無程序時(shí),在RAM中調(diào)試看結(jié)構(gòu)。但用J-Flash ARM V4.08l擦除flash后,keil中無法調(diào)試,顯示core is locked up, cpu halted。網(wǎng)上搜到說在J-Flash ARM V4.08l中target->unsecure chip->重新上電,就可以解鎖。如法炮制,失敗。因此在2中的試驗(yàn)中只能在flash中燒入空程序。解決方法需要繼續(xù)摸索。



          關(guān)鍵詞: STM32USART中

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉