日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]stm32的flash地址起始于0x08000000,結(jié)束地址是0x080000000加上芯片實(shí)際的flash大小,不同的芯片flash大小不同。RAM起始地址上0x200000000,結(jié)束地址是0x20000000加上芯片的RAM大小。STM32將外設(shè)等都映射為地址的形式

stm32的flash地址起始于0x08000000,結(jié)束地址是0x080000000加上芯片實(shí)際的flash大小,不同的芯片flash大小不同。RAM起始地址上0x200000000,結(jié)束地址是0x20000000加上芯片的RAM大小。STM32將外設(shè)等都映射為地址的形式,對(duì)地址的操作就是多外設(shè)的操作。

stm32的外設(shè)地址從0x40000000開(kāi)始,可以看到在庫(kù)文件中,是通過(guò)基于0x40000000地址的偏移量來(lái)操作寄存器以及外設(shè)的。

一般情況下,程序文件從0x08000000地址寫(xiě)入,這是STM32開(kāi)始執(zhí)行的地方,0x08000004是stm32的中斷向量表起始地址。

在使用keil編程的過(guò)程中,其編程地址的設(shè)置一般是這樣:


即程序程序的寫(xiě)入地址從0x08000000(數(shù)好零的個(gè)數(shù))開(kāi)始的,其大小為0x80000也就是512K的空間,換句話說(shuō)就是告訴編譯器flash的空間是從0x08000000-0x08080000,RAM的地址從0x20000000開(kāi)始,大小為0x10000也就是64K的RAM。這與STM32的內(nèi)存地址映射關(guān)系是對(duì)應(yīng)的

M3復(fù)位后,從0x08000004取出復(fù)位中斷的地址,并且跳轉(zhuǎn)到復(fù)位中斷程序,中斷執(zhí)行完之后會(huì)跳到我們的main函數(shù),main函數(shù)里邊一般是一個(gè)死循環(huán),進(jìn)去后就不會(huì)再退出,當(dāng)有中斷發(fā)生的時(shí)候,M3將PC指針強(qiáng)制跳轉(zhuǎn)回中斷向量表,然后根據(jù)中斷源進(jìn)入對(duì)應(yīng)的中斷函數(shù),執(zhí)行完中斷函數(shù)之后,再次返回main函數(shù)中。大致的流程就是這樣。

下面說(shuō)正題,IAP下載方式:

IAP下載的原理就是在M3中運(yùn)行有一個(gè)程序,這個(gè)程序的起始地址是從0x08000000開(kāi)始的,也就是說(shuō)M3復(fù)位后執(zhí)行的就是這個(gè)程序,稱(chēng)之為bootloader吧,一般這個(gè)程序的作用是接收APP程序,就是我們想要下載到M3上的程序,就好比給手機(jī)下載新的APP程序一樣,下載完成之后就可以跳轉(zhuǎn)APP的地址開(kāi)始執(zhí)行新的APP程序。當(dāng)有APP程序發(fā)送到M3上之后,bootloader程序就開(kāi)始接收并保存在RAM中(其實(shí)保存在哪里是由自己決定的,就看你程序怎樣設(shè)計(jì)了),程序下載完成之后,將PC指針指向程序的開(kāi)始地址就可以執(zhí)行該程序了,但是還有其他的要設(shè)置,那就是中斷向量表的偏移量需要根據(jù)APP程序的起始地址設(shè)置。

例如,在bootloader程序中,程序的起始地址是這樣設(shè)置的:0x08000000 ,size=0x80000。 RAM從地址:0x2000F800開(kāi)始,size=0x800。0x20000000-0x2000F800用來(lái)作為緩存,接收APP程序,接收完APP程序后將程序復(fù)制到flash中,就是最終執(zhí)行程序的時(shí)候,程序要已經(jīng)寫(xiě)在flash中。

APP程序中,我選擇將APP程序燒寫(xiě)在flash中,因?yàn)閎ootloader也會(huì)占用flash的空間,APP程序的存儲(chǔ)地址從0x08010000開(kāi)始,size=0x70000,也就說(shuō)0x08000000-0x08010000這段空間內(nèi)存放的是bootloader程序。接下來(lái)就是中斷向量表的設(shè)置:因?yàn)锳PP程序的起始地址是0x08010000,所以偏移量為10000,使用語(yǔ)句SCB->VTOR = FLASH_BASE " 0x10000;設(shè)置中斷向量表的偏移量。

設(shè)置好之后,將bootloader程序下載到板子上,復(fù)位運(yùn)行程序,接著下載bin文件程序,要運(yùn)行bin文件,將PC指針指向BIN文件的開(kāi)始地址就可以了,也就是指向0x08010000.

APP程序也可以直接運(yùn)行在RAM中,原理和上邊是一樣的,就是程序的起始地址不一樣了,還有一點(diǎn)就是,既然程序放在了RAM中運(yùn)行,那么設(shè)置RAM要注意地址,一部分是bootloader運(yùn)行的RAM,一部分是APP程序存放的空間,還有一部分是APP程序運(yùn)行需要的RAM。

bootloader接收bin文件的時(shí)候,我將存放地址定義成USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000))),也就是接收到的APP程序開(kāi)始地址是0x20001000

在RAM運(yùn)行APP的設(shè)置如下:



設(shè)置好之后下載bin文件,運(yùn)行方式和上邊是一樣的。

本人菜鳥(niǎo),記錄一下,順便把學(xué)到的知識(shí)梳理一下,就寫(xiě)了這個(gè),如有錯(cuò)誤歡迎大神指出!


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

根據(jù)IDC預(yù)測(cè),中國(guó)在人工智能領(lǐng)域的投資預(yù)計(jì)到2027年將達(dá)到381億美元,占全球總投資的近9%。作為全球人工智能的重要參與者,中國(guó)正加速在汽車(chē)、通信、醫(yī)療、金融等多個(gè)行業(yè)應(yīng)用和發(fā)展生成式AI技術(shù),全面邁入“AI 2.0...

關(guān)鍵字: AI 內(nèi)存 DDR5

在嵌入式開(kāi)發(fā)中,STM32的時(shí)鐘系統(tǒng)因其靈活性和復(fù)雜性成為開(kāi)發(fā)者關(guān)注的焦點(diǎn)。然而,看似簡(jiǎn)單的時(shí)鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時(shí)鐘源選擇、PLL配置、總線時(shí)鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時(shí)鐘系統(tǒng)

在嵌入式系統(tǒng)開(kāi)發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測(cè)等場(chǎng)景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動(dòng)下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革?;赟TM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動(dòng)態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

8月17日消息,近日,超頻愛(ài)好者“saltycroissant”成功將海盜船(CORSAIR)DDR5內(nèi)存超頻至12886MT/s,創(chuàng)造了新的世界紀(jì)錄。

關(guān)鍵字: 內(nèi)存 DDR5

在高性能服務(wù)架構(gòu)設(shè)計(jì)中,緩存是不可或缺的環(huán)節(jié)。在實(shí)際項(xiàng)目中,我們通常會(huì)將一些熱點(diǎn)數(shù)據(jù)存儲(chǔ)在Redis或Memcached等緩存中間件中,只有在緩存訪問(wèn)未命中時(shí)才查詢數(shù)據(jù)庫(kù)。

關(guān)鍵字: 緩存 內(nèi)存

7月25日消息,由于供應(yīng)短缺,最近一段時(shí)間DDR4內(nèi)存頻繁出現(xiàn)漲價(jià)、缺貨等現(xiàn)象。

關(guān)鍵字: DDR4 內(nèi)存

當(dāng)前智能家居產(chǎn)品需求不斷增長(zhǎng) ,在這一背景下 ,對(duì)現(xiàn)有澆花裝置缺陷進(jìn)行了改進(jìn) ,設(shè)計(jì)出基于STM32單片機(jī)的全 自動(dòng)家用澆花機(jī)器人。該設(shè)計(jì)主要由機(jī)械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機(jī)械結(jié)構(gòu)通過(guò)麥克納姆輪底盤(pán)與噴灑裝置的結(jié)合實(shí)現(xiàn)機(jī)器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過(guò)性強(qiáng)

用c++編程似乎是讓你的Arduino項(xiàng)目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個(gè)圖形化編程平臺(tái)將復(fù)雜電子項(xiàng)目的創(chuàng)建變成了拖動(dòng)和連接塊的簡(jiǎn)單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無(wú)線傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測(cè)、工業(yè)自動(dòng)化等場(chǎng)景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實(shí)現(xiàn)高效休眠調(diào)度與動(dòng)態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa
關(guān)閉