新聞中心

        STM32 USART中斷小程序

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

        本文引用地址:http://www.104case.com/article/201611/317053.htm

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

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

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

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

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

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

        3. 其他問(wèn)題

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



        關(guān)鍵詞: STM32USART中

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 视频| 江川县| 麟游县| 沂南县| 璧山县| 南昌市| 新田县| 亳州市| 久治县| 龙江县| 建水县| 冕宁县| 永德县| 贡觉县| 贡山| 白银市| 无极县| 大埔区| 山西省| 教育| 梅河口市| 崇阳县| 星子县| 崇礼县| 南郑县| 平邑县| 顺义区| 尼木县| 宜黄县| 泽普县| 綦江县| 阿城市| 郴州市| 鄂托克旗| 榆林市| 广平县| 南靖县| 盐源县| 托克逊县| 托克托县| 孟州市|