久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3721|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一個(gè)跟ST單片機(jī)啟動(dòng)文件有關(guān)的外設(shè)中斷無響應(yīng)話題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98618 發(fā)表于 2016-1-9 16:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本文作者是:Miler Shao
一般來講,微處理器的用戶程序運(yùn)行前總有個(gè)啟動(dòng)文件或類似的文件先行啟動(dòng),完成微處理器從復(fù)位過渡到運(yùn)行大家耳熟能詳?shù)?/span>main()函數(shù)所需要的基本環(huán)境的搭建和準(zhǔn)備,具體內(nèi)容跟開發(fā)環(huán)境及芯片類型而有所差異。STMCU也不例外,不論STM8還是STM32系列的MCU的程序運(yùn)行都有相應(yīng)的啟動(dòng)文件。

關(guān)于STM32 MCU的啟動(dòng)文件,以匯編指令完成。網(wǎng)絡(luò)上很多關(guān)于啟動(dòng)文件的講解,有些還講得比較透徹,有興趣的話可以搜索閱讀。STM32的啟動(dòng)文件的基本功能就是實(shí)施有關(guān)堆和棧的配載、系統(tǒng)時(shí)鐘的初始配置、中斷矢量的入口配置、各個(gè)中斷服務(wù)程序的入口地址加載、復(fù)位程序的執(zhí)行、以及到MAIN()函數(shù)的跳轉(zhuǎn)等。



很多時(shí)候,當(dāng)我們按部就班的建立項(xiàng)目工程的時(shí)候,那個(gè)后綴為S的啟動(dòng)文件可能被無視,貌似可有可無。其實(shí)不然,它的作用很重要、很關(guān)鍵。

STM32開發(fā)應(yīng)用過程中,碰到外設(shè)中斷不響應(yīng)的因素可能很多。比方有關(guān)外設(shè)的時(shí)鐘沒開啟、外設(shè)時(shí)鐘選擇錯(cuò)誤、NVIC中斷矢量沒有正確配置等。這里主要分享下跟STM32啟動(dòng)文件有關(guān)的外設(shè)中斷不響應(yīng)話題。


曾經(jīng)有人利用STM32F1系列某芯片開發(fā)產(chǎn)品,好像是用到SPI外設(shè)中斷,調(diào)試時(shí)發(fā)現(xiàn)怎么也進(jìn)不了中斷。反復(fù)檢查相關(guān)配置和中斷函數(shù)代碼就是發(fā)現(xiàn)不了問題。后來查看其代碼,發(fā)現(xiàn)配置沒有問題,唯一就發(fā)現(xiàn)中斷函數(shù)名跟啟動(dòng)文件里中斷矢量表里加載的函數(shù)名不一致。比方矢量表里的加載的是SPI1_IRQHandler,而他自己則另取了一個(gè)函數(shù)名,比如SPI1_INT或其它名字,反正不是SPI1_IRQHandler。這里不是不可以調(diào)整,調(diào)整的話,你新的函數(shù)名要與中斷矢量表里聲明的函數(shù)名一致,否則中斷發(fā)生時(shí)時(shí)CPU是跳不進(jìn)你定義的函數(shù)代碼里的。


另外一個(gè)跟啟動(dòng)文件有關(guān)的問題,多發(fā)生在STM32同一系列不同型號(hào)間的移植的時(shí)候。比方STM32F1STM32F4系列又各分好幾個(gè)子系列,各個(gè)子系列又對(duì)應(yīng)不同的啟動(dòng)文件。雖然子系列間的管腳及程序代碼兼容性極高,但它們的外設(shè)往往存在一些多寡的差異,導(dǎo)致相關(guān)外設(shè)的中斷矢量定義在各自的啟動(dòng)文件里也會(huì)有所不同。有時(shí)盡管用戶程序代碼寫得美輪美奐,結(jié)果發(fā)現(xiàn)個(gè)別外設(shè)中斷就是不響應(yīng),檢查代碼配置及語法很難發(fā)現(xiàn)問題。最后發(fā)現(xiàn)問題就出在前面提到的啟動(dòng)文件常開發(fā)者忽視,沒有及時(shí)根據(jù)芯片型號(hào)變動(dòng)而調(diào)整。

有一次某廣州的工程師用STM32F1做研發(fā)頗有些時(shí)日,算是熟手了。因?yàn)楫a(chǎn)品的原因,他經(jīng)常選用STM32F1系列不同芯片做產(chǎn)品開發(fā)。有一次他發(fā)現(xiàn)UART4沒法響應(yīng)中斷,芯片手冊(cè)也明確告知是有UART4的,而UART1/2又好好的,翻來覆去找不到原因。后來幾經(jīng)痛苦折騰,突然大徹大悟想到到了啟動(dòng)文件。原來他在從低容量的STM32F1芯片移植升級(jí)到更大容量、更多外設(shè)的芯片時(shí),忘記了做啟動(dòng)文件的同步更新。因?yàn)橛行┩庠O(shè)的中斷向量在低容量芯片的啟動(dòng)文件里根本就沒有。比如在STM32F1的低、中容量芯片的啟動(dòng)文件里就沒有相關(guān)UART4/5中斷矢量的定義。前不久有位深圳工程師在做STM32項(xiàng)目移植時(shí)好像也碰到這個(gè)問題。


當(dāng)然,我這里只是舉個(gè)例而已,同一STM32系列不同型號(hào)間的外設(shè)差異并不僅僅體現(xiàn)在UART。類似問題,在拿別人的程序模板基礎(chǔ)上自行調(diào)整并做MCU型號(hào)往高端方向移植時(shí)尤其容易碰到。因?yàn)槲覀兺鶗?huì)把注意力主要集中在應(yīng)用代碼的更新升級(jí)和開發(fā)調(diào)試上,而忘記相關(guān)啟動(dòng)文件的同步調(diào)整。

好,先就聊到這里,權(quán)當(dāng)提醒。愿各位STM32開發(fā)者尤其初學(xué)者,在調(diào)試開發(fā)過程中少走彎路,并期望從類似的分享中有更多的感悟或收獲。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美一区二区三区在线播放 | 97日日碰人人模人人澡分享吧 | 91一区二区三区在线观看 | 中文av电影 | 日韩高清电影 | 久久午夜剧场 | 国产999精品久久久久久 | 亚洲精品久久久一区二区三区 | 国产亚洲精品综合一区 | 亚洲永久字幕 | 一区二区三| 国产九九精品 | 亚洲精品一区二区在线观看 | 午夜在线影院 | 成人免费视频网站在线观看 | 做a的各种视频 | 亚洲 中文 欧美 日韩 在线观看 | 成人在线视频观看 | 亚洲一区二区在线播放 | 中文字字幕在线中文乱码范文 | 亚洲一二三区不卡 | 一区二区三区四区在线播放 | 欧美精品一区二区三区在线 | 黄色国产视频 | av天天干 | 成人在线网 | 91一区二区三区 | 久久大香| 精品国产乱码久久久久久闺蜜 | 9久9久9久女女女九九九一九 | 蜜月va乱码一区二区三区 | 国产精品99久久久久久久久 | 国产激情视频在线 | 日韩高清成人 | 91精品久久久久久久久久小网站 | 久久中文字幕视频 | 国产美女黄色 | 成年女人免费v片 | 在线观看www | 日韩一区二区在线看 | 国产欧美日韩在线 |