今天分享以下兩點(diǎn)內(nèi)容:
1.為什么我們要先開(kāi)啟STM32外設(shè)模塊時(shí)鐘;
2.關(guān)于STM32的 I/O 復(fù)用功能及什么時(shí)候開(kāi)啟AFIO時(shí)鐘;
1為什么我們要先開(kāi)啟STM32外設(shè)時(shí)鐘
講述本節(jié)內(nèi)容之前先說(shuō)一個(gè)案例:
前段時(shí)間,有一個(gè)朋友為配置EXTI的代碼折騰了一天,最終沒(méi)有結(jié)果。于是問(wèn)了我這樣一個(gè)問(wèn)題:“你用過(guò)STM32F051C8T6的外部中斷嗎,就是GPIO管腳做中斷,我這邊就是進(jìn)不了中斷”。 然后他把基于標(biāo)準(zhǔn)外設(shè)庫(kù)、寄存器寫(xiě)的代碼都給我發(fā)過(guò)來(lái)了。我仔細(xì)看了又看,沒(méi)發(fā)現(xiàn)有什么毛病啊。(但是,代碼是截圖分來(lái)給我發(fā)過(guò)來(lái)的)。 于是,我將之前配置IO外部中斷的代碼,按照他(PB2)的要求,寫(xiě)成一個(gè)“EXTI配置”函數(shù)發(fā)給他,他直接拷貝過(guò)去,成功了。 于是,他仔細(xì)對(duì)比了代碼,終于發(fā)現(xiàn)了問(wèn)題的原因,配置的順序不對(duì),使能時(shí)鐘不是在最開(kāi)始。
我想許多朋友都曾遇到過(guò)這種坑,我最初學(xué)習(xí)STM32的時(shí)候同樣也遇到過(guò),下面我就來(lái)說(shuō)說(shuō)為什么我們要先開(kāi)啟STM32外設(shè)模塊時(shí)鐘,再對(duì)其外設(shè)模塊初始化配置?
1.系統(tǒng)架構(gòu)
不同類(lèi)型的STM32,它的系統(tǒng)架構(gòu)各有不同,但原理都類(lèi)似,由多條主控總線(xiàn)和多條被控總線(xiàn)組成(請(qǐng)參看【參考手冊(cè)】存儲(chǔ)器和總線(xiàn)架構(gòu)章節(jié))。
如STM32F4:
● 八條主控總線(xiàn):
— Cortex?-M4F 內(nèi)核 I 總線(xiàn)、 D 總線(xiàn)和 S 總線(xiàn)
— DMA1 存儲(chǔ)器總線(xiàn)
— DMA2 存儲(chǔ)器總線(xiàn)
— DMA2 外設(shè)總線(xiàn)
— 以太網(wǎng) DMA 總線(xiàn)
— USB OTG HS DMA 總線(xiàn)
● 七條被控總線(xiàn):
— 內(nèi)部 Flash ICode 總線(xiàn)
— 內(nèi)部 Flash DCode 總線(xiàn)
— 主要內(nèi)部 SRAM1 (112 KB)
— 輔助內(nèi)部 SRAM2 (16 KB)
— 輔助內(nèi)部 SRAM3 (64 KB)(僅適用于 STM32F42xxx 和 STM32F43xxx 器件)
— AHB1 外設(shè)(包括 AHB-APB 總線(xiàn)橋和 APB 外設(shè))
— AHB2 外設(shè)
— FSMC
借助總線(xiàn)矩陣,可以實(shí)現(xiàn)主控總線(xiàn)到被控總線(xiàn)的訪(fǎng)問(wèn),這樣即使在多個(gè)高速外設(shè)同時(shí)運(yùn)行期間,系統(tǒng)也可以實(shí)現(xiàn)并發(fā)訪(fǎng)問(wèn)和高效運(yùn)行。
2.關(guān)于AHB和APB總線(xiàn)
AHB:Advanced High-performance Bus,即先進(jìn)的高性能總線(xiàn).
APB:Advanced Peripheral Bus,即先進(jìn)的外圍(外設(shè))總線(xiàn).
上面說(shuō)了系統(tǒng)總線(xiàn)的架構(gòu)引伸出來(lái)的就是AHB和APB總線(xiàn),那為什么要講述AHB和APB總線(xiàn)呢?
我們操作的外圍設(shè)備一般都是位于AHB和APB總線(xiàn)上,而AHB可以引伸出AHB1、AHB2,甚至AHB3。同樣APB也存在APB1、APB2等。
如:USART1外設(shè)位于APB1總線(xiàn)上,GPIOA位于AHB1高速總線(xiàn)上。
請(qǐng)注意參考手冊(cè)中“AHB/APB 總線(xiàn)橋”這一小節(jié),有一條重要的內(nèi)容:每次芯片復(fù)位后,所有外設(shè)時(shí)鐘都被關(guān)閉( SRAM 和 Flash 接口除外)。使用外設(shè)前,必須在 RCC_AHBxENR 或 RCC_APBxENR 寄存器中使能其時(shí)鐘。
3.STM32時(shí)鐘控制
請(qǐng)參看STM32參考手冊(cè)關(guān)于【復(fù)位與時(shí)鐘控制RCC】章節(jié)。
STM32的時(shí)鐘控制模塊因MCU芯片不同,各有差異,但原理都類(lèi)似,功能也相當(dāng)豐富。主要的目的就是給相對(duì)獨(dú)立的外設(shè)模塊提供時(shí)鐘,也是為了降低整個(gè)芯片的功能。
降低功耗是主要原因,還有一個(gè)原因,就是為了兼容不同速度的設(shè)備,有些高速,有些低速,如果都用高速時(shí)鐘,勢(shì)必造成浪費(fèi)。
RCC給外設(shè)提供時(shí)鐘是一個(gè)主要目的,那么為什么要提供時(shí)鐘呢? 原因在于外圍設(shè)備的寄存器需要時(shí)鐘才能工作。你可以把外設(shè)當(dāng)做一個(gè)設(shè)備,而這個(gè)設(shè)備需要給它提供電源(時(shí)鐘)才能工作。
你在STM32參考手冊(cè)的“RCC”章節(jié)可能會(huì)看到這么一句話(huà):當(dāng)外設(shè)時(shí)鐘沒(méi)有啟用時(shí),軟件不能讀出外設(shè)寄存器的數(shù)值,返回的數(shù)值始終是0x0。
4.總結(jié)
看到這里相信聰明的你其中已經(jīng)明白為什么我們要先開(kāi)啟STM32外設(shè)模塊時(shí)鐘,再配置其外設(shè)模塊了。
簡(jiǎn)單來(lái)說(shuō):操作外設(shè)是通過(guò)外設(shè)總線(xiàn)來(lái)實(shí)現(xiàn),只有外設(shè)總線(xiàn)有時(shí)鐘了才能操作外設(shè)。
坑:
A.先使能外設(shè)時(shí)鐘,再對(duì)其進(jìn)行配置
B.時(shí)鐘配置需對(duì)應(yīng)總線(xiàn)
這種基于標(biāo)準(zhǔn)外設(shè)庫(kù)的低級(jí)錯(cuò)誤,相信肯定有不少人遇到過(guò),希望提高警惕。
2關(guān)于STM32的I/O復(fù)用功能及什么時(shí)候開(kāi)啟AFIO時(shí)鐘
前面有朋友問(wèn):“什么時(shí)候開(kāi)啟AFIO時(shí)鐘”。寫(xiě)了上面章節(jié),就順便再講述一下關(guān)于STM32的I/O復(fù)用功能及什么時(shí)候開(kāi)啟AFIO時(shí)鐘。
1.什么是I/O 復(fù)用功能?
簡(jiǎn)單來(lái)說(shuō)就是把普通I/O用作其它的功能。如:將PA9引腳用作USART1的Tx引腳,那么我們就把這個(gè)Tx引腳稱(chēng)為PA9的復(fù)用功能。
打開(kāi)數(shù)據(jù)手冊(cè),會(huì)發(fā)現(xiàn)類(lèi)似如下的列表:
2.什么時(shí)候開(kāi)啟AFIO時(shí)鐘
為了優(yōu)化芯片引腳封裝的外設(shè)數(shù)目,可以把一些復(fù)用功能重新映射到其他引腳上。設(shè)置復(fù)用重映射和調(diào)試I/O配置寄存器實(shí)現(xiàn)引腳的重新映射。這時(shí),復(fù)用功能不再映射到它們的原始分配上,而是映射到“重定義功能”上(見(jiàn)上圖)。
這種將引腳重定義到其它引腳上的功能在幾乎所有STM32芯片中都有這個(gè)功能,但是實(shí)現(xiàn)的方法可能有所不同,其中STM32F1就是通過(guò)事件控制的方式將特定功能引腳連接到對(duì)應(yīng)PORT和PIN上。
簡(jiǎn)單來(lái)說(shuō),如果需要使用重定義功能,那么就需要開(kāi)啟AFIO時(shí)鐘。
最后,如果你覺(jué)得你的程序可能是因?yàn)闀r(shí)鐘配置的問(wèn)題,不妨上電第一步使能所有時(shí)鐘試試。
上一篇:基于STM32、FreeRTOS實(shí)現(xiàn)硬件看門(mén)狗+軟件看門(mén)狗監(jiān)測(cè)多任務(wù)的方法
下一篇:宏定義“中斷函數(shù)接口”的注意事項(xiàng)
推薦閱讀
史海拾趣
Antelec公司創(chuàng)立于XXXX年,由一群富有遠(yuǎn)見(jiàn)和熱情的電子工程師組成。創(chuàng)立初期,公司專(zhuān)注于研發(fā)先進(jìn)的電子測(cè)量與分析技術(shù),成功開(kāi)發(fā)出一種具有高精度和穩(wěn)定性的測(cè)量?jī)x器,填補(bǔ)了市場(chǎng)上的空白。這一技術(shù)突破不僅贏得了客戶(hù)的青睞,也為公司的后續(xù)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
Frequency Devices公司自成立之初,便以技術(shù)創(chuàng)新為核心驅(qū)動(dòng)力。在20世紀(jì)90年代初,公司研發(fā)團(tuán)隊(duì)成功開(kāi)發(fā)出一種新型高頻濾波器,該濾波器在信號(hào)傳輸效率和穩(wěn)定性上實(shí)現(xiàn)了重大突破。這一創(chuàng)新不僅解決了當(dāng)時(shí)通信領(lǐng)域的一大技術(shù)難題,還迅速獲得了市場(chǎng)的廣泛認(rèn)可。隨著技術(shù)的不斷迭代,F(xiàn)requency Devices公司持續(xù)投入研發(fā),推出了更多高性能、低成本的高頻電子產(chǎn)品,逐步奠定了其在行業(yè)內(nèi)的領(lǐng)先地位。
為了確保產(chǎn)品質(zhì)量和客戶(hù)滿(mǎn)意度,常州能動(dòng)不斷完善質(zhì)量管理體系。公司引進(jìn)了國(guó)際先進(jìn)的質(zhì)量管理方法,建立了嚴(yán)格的質(zhì)量檢測(cè)流程。同時(shí),公司還加大了對(duì)生產(chǎn)設(shè)備的投入,引進(jìn)了先進(jìn)的生產(chǎn)設(shè)備和技術(shù),提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。這些努力使得常州能動(dòng)的產(chǎn)品質(zhì)量得到了客戶(hù)的高度認(rèn)可。
進(jìn)入21世紀(jì)后,Heimann Optoelectronics Gmbh意識(shí)到全球化合作的重要性。公司積極尋求與國(guó)際知名企業(yè)的合作機(jī)會(huì),與美國(guó)一家領(lǐng)先的半導(dǎo)體制造商共同研發(fā)了新一代的光電集成芯片。這一合作不僅提升了產(chǎn)品的技術(shù)水平和市場(chǎng)競(jìng)爭(zhēng)力,還借助合作伙伴的全球銷(xiāo)售網(wǎng)絡(luò),將Heimann的產(chǎn)品迅速推向國(guó)際市場(chǎng)。同時(shí),公司也在亞洲設(shè)立了研發(fā)中心和生產(chǎn)基地,進(jìn)一步提升了生產(chǎn)效率和供應(yīng)鏈管理能力。
隨著全球化的加速推進(jìn),國(guó)際化戰(zhàn)略成為了企業(yè)發(fā)展的重要方向。Cal Crystal Lab Inc在穩(wěn)固國(guó)內(nèi)市場(chǎng)的基礎(chǔ)上,積極實(shí)施國(guó)際化戰(zhàn)略。公司不僅在海外設(shè)立了研發(fā)中心和生產(chǎn)基地,還加大了對(duì)國(guó)際市場(chǎng)的開(kāi)拓力度。通過(guò)與當(dāng)?shù)仄髽I(yè)的合作與交流,Cal Crystal Lab Inc不斷適應(yīng)國(guó)際市場(chǎng)的需求和變化,提升了公司在全球市場(chǎng)的競(jìng)爭(zhēng)力。
這五個(gè)故事只是虛構(gòu)的示例,并不代表任何真實(shí)公司的歷史。實(shí)際的電子行業(yè)公司發(fā)展歷程往往更加復(fù)雜和多樣,受到市場(chǎng)、技術(shù)、政策等多種因素的影響。如果您需要了解特定公司的真實(shí)發(fā)展故事,建議查閱相關(guān)資料或咨詢(xún)相關(guān)人士。
隨著市場(chǎng)的不斷擴(kuò)大和需求的增加,藍(lán)箭電子逐漸形成了年產(chǎn)150億只的生產(chǎn)規(guī)模,成為華南地區(qū)主要的半導(dǎo)體器件生產(chǎn)基地之一。公司憑借優(yōu)質(zhì)的產(chǎn)品和服務(wù),贏得了廣大客戶(hù)的認(rèn)可,市場(chǎng)份額逐年提升。
一、解釋 VCC:C=circuit 表示電路的意思, 即接入電路的電壓; VDD:D=device 表示器件的意思, 即器件內(nèi)部的工作電壓; VSS:S=series 表示公共連接的意思,通常指電路公共接地端電壓。 二、說(shuō)明 1、對(duì)于數(shù)字電路來(lái)說(shuō),VCC是電路的 ...… 查看全部問(wèn)答∨ |
|
怎樣獲得進(jìn)程加載了哪些模塊(dll)?有沒(méi)有相關(guān)的API或者例子程序? 請(qǐng)知道的朋友說(shuō)一下,非常緊急! 謝謝!… 查看全部問(wèn)答∨ |
大家好 我是個(gè)菜鳥(niǎo) 最近在公司實(shí)習(xí) 老板要做些驅(qū)動(dòng) 我是以前一點(diǎn)都沒(méi)有接觸過(guò)WINCE 也不知道怎么入手 沒(méi)一點(diǎn)頭緒 何況也沒(méi)時(shí)間慢慢看書(shū)了 希望達(dá)人們給些意見(jiàn) 另外我用VS05+6.0R3 該裝的補(bǔ)丁都裝了 自己定制系統(tǒng) 為什么還會(huì)有1個(gè)錯(cuò)誤 ...… 查看全部問(wèn)答∨ |
菜鳥(niǎo)提問(wèn):注入轉(zhuǎn)換(injectedconversion)是指什么? 這幾天看STM32手冊(cè),看到了injected conversion這個(gè)概念,不知道它的具體功能是什么,而injected conver ...… 查看全部問(wèn)答∨ |
|
內(nèi)核中主要包含以下的文件: 1.uCOS-II Source->source:(與處理器類(lèi)型無(wú)關(guān)的代碼) OS_CORE.C 系統(tǒng)初始化,開(kāi)啟多任務(wù)環(huán)境等的代碼 OS_CPU_C.C 多任務(wù)棧初始化等與處理器有關(guān)的代碼 OS_FLAG .C 事件標(biāo)志組 ...… 查看全部問(wèn)答∨ |
最近自己訪(fǎng)問(wèn)論壇有些現(xiàn)象,不知道是我電腦問(wèn)題還是其他什么問(wèn)題,我用XP系統(tǒng)IE7的瀏覽器。 1. 夜里前些天登錄老困難了,半天頁(yè)面打不開(kāi),而且要刷新好幾次,但我訪(fǎng)問(wèn)其他網(wǎng)站倒挺快的。 2. 查看帖子或者發(fā)表帖子會(huì)出現(xiàn)“未定義操作”提示,比如 ...… 查看全部問(wèn)答∨ |
學(xué)習(xí)《DLP 微型投影業(yè)務(wù)及技術(shù)應(yīng)用介紹》第一課--學(xué)習(xí)心得 學(xué)習(xí)完第一課我認(rèn)識(shí)到DLP技術(shù)確實(shí)很震撼,從結(jié)構(gòu)上來(lái)說(shuō)是有微鏡陣列,微鏡陣列下集成了大約25萬(wàn)個(gè)鏡子,深究?jī)?nèi)部結(jié)構(gòu),其實(shí)是有CMOS存儲(chǔ)單元組成的,一個(gè)DLP芯片有數(shù)以萬(wàn)計(jì)的像素點(diǎn)。DLP其實(shí)是數(shù)字光學(xué)處理技術(shù),1987年由德州儀器發(fā)明,1996年德州 ...… 查看全部問(wèn)答∨ |
EEWORLD大學(xué)堂----為什么選擇TI藍(lán)牙 為什么選擇TI藍(lán)牙:https://training.eeworld.com.cn/course/393… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 【下載】LAT1526 利用SPI的下溢實(shí)現(xiàn)回顯功能
- 【下載】LAT1509 STM32G0B1的FDCAN進(jìn)行通信丟包和多包案例分享
- 【下載】LAT1511 運(yùn)行Ux_Host_HUB_HID_MSC通過(guò)Hub連接U盤(pán)讀寫(xiě)不穩(wěn)定問(wèn)題分析
- 【下載】LAT1466 USB x Device HID Standalone的移植
- 【下載】LAT1488 STM32 USBxDevice MSC standalone移植示例
- 【下載】LAT1482 STM32G0單線(xiàn)串口通信幀錯(cuò)誤問(wèn)題解析
- stm32與Arduino的比較
- STM32H503開(kāi)發(fā)(2)----STM32CubeProgrammer燒錄
- STM32簡(jiǎn)介 STM32和ARM7的關(guān)系
- stm32屬于arm嗎_arm和stm32的區(qū)別
- STM32調(diào)試神器STM32CubeMonitor介紹
- 基于通過(guò)寄存器和調(diào)用庫(kù)函數(shù)的方式,對(duì)比測(cè)試STM32讀寫(xiě)IO時(shí)間
- 基于STM32單片機(jī)通過(guò)使用宏assert_param來(lái)實(shí)現(xiàn)運(yùn)行時(shí)間檢測(cè)
- 基于stm32單片機(jī)利用通用定時(shí)器輸出PWM
- 工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲(chóng)燈
- 激光雷達(dá)最重要的參數(shù):信噪比
- 十字路口的“金屬休克”:盤(pán)點(diǎn)那些智駕系統(tǒng)很難替代人類(lèi)駕駛員的場(chǎng)景
- IP智能家居控制系統(tǒng)
- 鋰離子電池充電電路設(shè)計(jì)
- 手機(jī)中音頻系統(tǒng)抗ESD和EMI干擾設(shè)計(jì)
- 北航吳江浩教授團(tuán)隊(duì)研發(fā)的首個(gè)具備自主懸停能力的仿蜂鳥(niǎo)微型飛行器
- 基于VMR6512的無(wú)線(xiàn)音頻轉(zhuǎn)發(fā)器設(shè)計(jì)
- CS7123在電視盒中的應(yīng)用
- AiMOGA墨甲機(jī)器人驚艷亮相印尼車(chē)展,加速東南亞智能銷(xiāo)售布局
- LED閃光燈驅(qū)動(dòng)芯片在照相手機(jī)中的應(yīng)用
- 浮球液位計(jì)故障診斷的方法有哪些
- 磁翻板液位計(jì)的主要優(yōu)勢(shì)
- 超聲波液位計(jì)現(xiàn)場(chǎng)安裝操作指南
- 高頻脈沖雷達(dá)物位計(jì)采購(gòu)注意事項(xiàng)
- MC9S12XET256之ECT模塊(6)
- 庫(kù)克稱(chēng)蘋(píng)果將下調(diào)部分海外市場(chǎng)iPhone價(jià)格
- 2018年高端手機(jī)銷(xiāo)量出現(xiàn)18%幅度的增長(zhǎng),華為增速97%
- iPhone 11設(shè)計(jì)效果圖:配備橫向三鏡頭
- 人機(jī)大戰(zhàn)背后:谷歌人工智能只是噱頭
- 雪佛蘭Bolt電機(jī)驅(qū)動(dòng)系統(tǒng)
- TQ6410,ARM11,S3C6410平臺(tái)評(píng)測(cè)!
- 傳感器:與IC趨于集成MEMS遍及高端
- 哪款單片機(jī)同能時(shí)控制視頻傳輸和電機(jī)???急急急
- 各類(lèi)開(kāi)發(fā)實(shí)用電路圖及常用程序精華
- Verilog 經(jīng)典實(shí)例133個(gè)
- 關(guān)于DSP程序優(yōu)化效果的客觀測(cè)量
- 51系列嵌入式開(kāi)發(fā)學(xué)習(xí)路線(xiàn)
- TMS320F2806芯片封裝庫(kù)
- 沒(méi)錢(qián)做PCB怎么辦?看高人的
- S—51單片機(jī)在多路無(wú)線(xiàn)報(bào)警系統(tǒng)中的應(yīng)用