關(guān)于STM32片上Flash讀寫(xiě)操作,之前很多朋友遇到過(guò)坑,也問(wèn)過(guò)很多相關(guān)的問(wèn)題,這里再簡(jiǎn)單總結(jié)一下。
1寫(xiě)在前面
STM32片上Flash除了存儲(chǔ)我們的代碼,多余的空間還可以供我自己編程(讀寫(xiě))。比如,存儲(chǔ)標(biāo)志位、字庫(kù)等。
如果對(duì)片上Flash讀寫(xiě)操作不當(dāng),將會(huì)導(dǎo)致不可挽回的結(jié)局。比如:修改了應(yīng)用程序代碼導(dǎo)致程序跑飛,非對(duì)其操作導(dǎo)致異常中斷等。
因此,我們對(duì)片上Flash讀寫(xiě)操作時(shí),一定要避免一些錯(cuò)誤的做法。下面將講述一些關(guān)于STM32片上Flash的知識(shí),讓大家掌握更多相關(guān)知識(shí)。
2Flash閃存接口
STM32片上Flash閃存接口是在AHB協(xié)議上實(shí)現(xiàn)了對(duì)指令和數(shù)據(jù)的訪問(wèn),它通過(guò)對(duì)存儲(chǔ)器的預(yù)取緩存,加快了存儲(chǔ)器的訪問(wèn);
閃存接口還實(shí)現(xiàn)了在所有工作電壓下對(duì)閃存編程和擦除所需的邏輯電路,這里還包括訪問(wèn)和寫(xiě)入保護(hù)以及選項(xiàng)字節(jié)的控制。
內(nèi)置閃存模塊可以在通用地址空間直接尋址,任何32位數(shù)據(jù)的讀操作都能訪問(wèn)閃存模塊的內(nèi)容并得到相應(yīng)的數(shù)據(jù)。
3STM32片上Flash容量
STM32片上Flash容量大小與芯片的型號(hào)有關(guān),具體大小可以參看命名規(guī)則:
而我們也可以通過(guò)讀取Flash容量寄存器,或通過(guò)STM32 ST-LINK Utility工具獲取芯片容量。具體可以參看我的另一篇文章《關(guān)于STM32的這幾個(gè)寄存器》
4Flash閃存模塊的組織
STM32的Flash,有的是分頁(yè),而有的卻是分塊,具體可以查閱“參考手冊(cè)”。
比如:STM32F0、 F1、 F3、 L1等就是按Page頁(yè)來(lái)劃分的,如下圖:
而像STM32F2、F4等就是按Sector扇區(qū)來(lái)劃分,如下圖:
所以,如果移植代碼,從Page頁(yè)移植到Sector扇區(qū),或者從Sector扇區(qū)移植到Page頁(yè),這部分底層代碼必須要修改才行。
5非對(duì)其寫(xiě)操作
STM32為32位的MCU,即4個(gè)字節(jié)。如果不是按照4個(gè)字節(jié)的寫(xiě)Flash,將導(dǎo)致Faults異常。
寫(xiě)Flash過(guò)程:
這里大家可以參看我之前分享的文章:
1.位帶別名區(qū)最低有效位
2.談?wù)凷TM32(CM3)的Faults異常
6寫(xiě)操作不響應(yīng)代碼或數(shù)據(jù)讀取
對(duì)STM32內(nèi)部FLash的寫(xiě)操作,相對(duì)于執(zhí)行指令是比較耗時(shí)的。從數(shù)據(jù)手冊(cè)可以得出16位數(shù)據(jù)編程時(shí)間再40 --- 70us。
從STM32編程手冊(cè)中,可以知道:在進(jìn)行寫(xiě)或擦除操作時(shí),不能進(jìn)行代碼或數(shù)據(jù)的讀取操作。
比如:你在寫(xiě)Flash期間有接收串口數(shù)據(jù),很有可能會(huì)丟串口數(shù)據(jù)。
因?yàn)楸容^耗時(shí),所以,在寫(xiě)數(shù)據(jù)時(shí),CPU不會(huì)執(zhí)行其他操作。
簡(jiǎn)單說(shuō):在寫(xiě)Flash時(shí),CPU 不能取指令,導(dǎo)致中斷得不到及時(shí)響應(yīng),從而發(fā)生接收到的數(shù)據(jù)未及時(shí)讀走而被覆蓋的現(xiàn)象。
遇到這種情況,解決的辦法:使用DMA。DMA不需要CPU干預(yù),一旦 USART 有數(shù)據(jù)接收到,由 DMA 負(fù)責(zé)將其傳輸至循環(huán)緩沖區(qū)中。軟件定期檢測(cè)循環(huán)緩沖區(qū)中是否有接收到的數(shù)據(jù),如果有則加以處理。
提示:
如果你的代碼會(huì)反復(fù)讀Flash,建議使用外部Flash。
上一篇:關(guān)于STM32的這幾個(gè)寄存器,你知道嗎?
下一篇:定時(shí)器基本原理及常見(jiàn)問(wèn)題
推薦閱讀
史海拾趣
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,F(xiàn)ibrefab開(kāi)始實(shí)施全球化戰(zhàn)略。公司先后在亞洲、歐洲和美洲等地設(shè)立生產(chǎn)基地和研發(fā)中心,以滿足不同地區(qū)客戶的需求。同時(shí),F(xiàn)ibrefab還積極與全球知名的電信運(yùn)營(yíng)商和設(shè)備制造商建立合作關(guān)系,共同推動(dòng)光纖通訊技術(shù)的發(fā)展和應(yīng)用。這一戰(zhàn)略的實(shí)施不僅幫助Fibrefab拓展了海外市場(chǎng),也提升了其品牌影響力和市場(chǎng)競(jìng)爭(zhēng)力。
創(chuàng)世公司(CS)的創(chuàng)立源于對(duì)未來(lái)技術(shù)趨勢(shì)的敏銳洞察。在5G、人工智能、物聯(lián)網(wǎng)等行業(yè)還未廣泛崛起的初期,創(chuàng)世公司就預(yù)見(jiàn)到這些技術(shù)將引領(lǐng)未來(lái)電子行業(yè)的發(fā)展?;谶@種戰(zhàn)略眼光,創(chuàng)世公司決定專注于SD NAND存儲(chǔ)產(chǎn)品的研發(fā)和生產(chǎn)。這一決策不僅為公司的后續(xù)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ),也展示了創(chuàng)始團(tuán)隊(duì)對(duì)未來(lái)技術(shù)趨勢(shì)的堅(jiān)定信心。
在快速發(fā)展的同時(shí),港源公司始終不忘履行社會(huì)責(zé)任。公司秉承綠色環(huán)保、節(jié)能減排的理念,在生產(chǎn)經(jīng)營(yíng)活動(dòng)中以預(yù)防為主、全員參與為行動(dòng)綱領(lǐng),防治污染、節(jié)廢減排。港源公司選用綠色環(huán)保RoHS材料,嚴(yán)格管控生產(chǎn)制造過(guò)程,確保生產(chǎn)出的產(chǎn)品符合國(guó)際環(huán)保標(biāo)準(zhǔn)。此外,公司還積極參與社會(huì)公益活動(dòng),為社會(huì)和諧發(fā)展貢獻(xiàn)自己的力量。
面對(duì)電子行業(yè)的快速變革和市場(chǎng)需求的不斷變化,港源公司始終保持敏銳的市場(chǎng)洞察力和持續(xù)的創(chuàng)新精神。公司不斷加大研發(fā)投入,推動(dòng)產(chǎn)業(yè)升級(jí)和產(chǎn)品結(jié)構(gòu)優(yōu)化。通過(guò)技術(shù)創(chuàng)新和高效智造系統(tǒng)構(gòu)建,港源公司實(shí)現(xiàn)了產(chǎn)品自動(dòng)化制造的高覆蓋率,并在精密小型化的塑膠五金零部件領(lǐng)域取得了突破性技術(shù)優(yōu)勢(shì)。這些努力不僅使港源公司在市場(chǎng)競(jìng)爭(zhēng)中保持領(lǐng)先地位,還為公司未來(lái)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在快速發(fā)展的電子行業(yè)中,Ettinger始終堅(jiān)持傳統(tǒng)工藝和品質(zhì)至上的原則。公司不僅仍然由Ettinger家族所有,所有的產(chǎn)品制作也依然保持純手工制作,以確保每一件產(chǎn)品都達(dá)到最高的品質(zhì)標(biāo)準(zhǔn)。這種對(duì)品質(zhì)和工藝的執(zhí)著追求,使得Ettinger在競(jìng)爭(zhēng)激烈的電子行業(yè)中獨(dú)樹(shù)一幟,贏得了消費(fèi)者的信任和尊重。
Ettinger與英國(guó)著名汽車(chē)品牌Bentley建立了長(zhǎng)期合作伙伴關(guān)系。作為Bentley汽車(chē)皮件配飾和皮具產(chǎn)品的指定供應(yīng)商,Ettinger為Bentley提供了高品質(zhì)的皮具產(chǎn)品,進(jìn)一步提升了品牌的知名度和影響力。這種合作伙伴關(guān)系的建立,也為Ettinger帶來(lái)了更多的商業(yè)機(jī)會(huì)和發(fā)展空間。
【藏書(shū)閣】晶體管開(kāi)關(guān)電路的設(shè)計(jì)和應(yīng)用 書(shū)名:晶體管開(kāi)關(guān)電路的設(shè)計(jì)和應(yīng)用 出版社:科學(xué)出版社 出版時(shí)間:1972 頁(yè)數(shù):346頁(yè) 開(kāi)本:19cm 目錄: 第一章 晶體管的物理特性 第二章 面結(jié)型晶體管的小信號(hào)等效電路 第三章 各類(lèi)晶體管的制作及其特性 第四章 晶體管作為開(kāi)關(guān)作用 第五章 晶 ...… 查看全部問(wèn)答∨ |
|
用STM32F103RET6,編譯器是keil,寫(xiě)了一個(gè)宏定義和一個(gè)函數(shù),實(shí)現(xiàn)同樣的功能,即在PA.0上發(fā)一個(gè)脈沖,定義分別為: 宏定義: #define PULSE1(){GPIOA->BSRR=0x01;GPIOA->BRR=0x01;} 函數(shù)定義: void debug_pulse(void) { GPIOA-> ...… 查看全部問(wèn)答∨ |
求好心人給提供MSP430F425相關(guān)資料。求好心人給提供MSP430F425相關(guān)資料?!? 查看全部問(wèn)答∨ |
win7 ccs安裝及申請(qǐng)免費(fèi)版 License 今天開(kāi)始看Launchpad公開(kāi)課了,先把軟件裝上,我的是ccs v4.2的。安裝就不多說(shuō)了,發(fā)一下怎么申請(qǐng)License吧見(jiàn)文檔: [ 本帖最后由 zhuludiqing 于 2012-6-26 13:26 編輯 ]… 查看全部問(wèn)答∨ |
|
ATMEGA169的引腳中斷不起作用!強(qiáng)烈質(zhì)疑ATMEGA169PA ! ATMEGA169的引腳中斷不起作用!強(qiáng)烈質(zhì)疑ATMEGA169PA ! [ 本帖最后由 gh131413 于 2013-12-9 15:45 編輯 ]… 查看全部問(wèn)答∨ |
用UC3909芯片制作的充電器,保護(hù)熱敏電阻的選擇疑惑 用UC3909做了一個(gè)24V鉛酸電池的充電器,目前充電器工作完全按照設(shè)計(jì)的要求運(yùn)行,并且經(jīng)過(guò)了多次測(cè)試。 現(xiàn)在想將熱敏電阻保護(hù)加進(jìn)去,可是在對(duì)UC3909熱敏電阻那塊運(yùn)放電路計(jì)算時(shí),出現(xiàn)了一些疑惑: 1,電池溫度升高,最后浮充充電電壓應(yīng)該減小,這 ...… 查看全部問(wèn)答∨ |
如果一個(gè)路由器給[img=0,1]file:///D:\\程序\\QQMessageOfMyself\\1185054154\\Image\\C2C\\9W8C}DR4ZVO3TXNJFJ[[6HF.png[/img]協(xié)調(diào)器發(fā)數(shù)據(jù),不丟包,如果兩個(gè)路由器同時(shí)給協(xié)調(diào)器發(fā)送數(shù)據(jù),有時(shí)候某個(gè)路由器的數(shù)據(jù)就丟了,有時(shí)候丟一個(gè),有時(shí)候丟 ...… 查看全部問(wèn)答∨ |
一、電腦周邊電子配件 主板:14.318MHZ、24.576、25MHZ、27MHZ、32.768KHZ 顯示器:8M/14.31818MHZ、12.000MHZ、24.000MHZ、28.224MHZ 硬盤(pán): 23.040MHz,28.224MHz 光驅(qū):33.8688MHz,16.9344MHz,18.432MHz 鍵盤(pán):6.000MHz 鼠標(biāo):6.000MHz ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- RISC-V人才該怎么培養(yǎng)?專家這樣說(shuō)
- 割草機(jī)器人,四大流派的巔峰之戰(zhàn)
- 車(chē)載顯示迎來(lái)三大革命丨“形態(tài)”革命
- 什么是“CDC+空懸”?
- 汽車(chē)電子信息安全:如何有效保護(hù)硬件Debug口?
- 新能源汽車(chē)核心技術(shù)之“大三電”、“小三電”
- 芯原如何推動(dòng)RISC-V嵌入式軟件人才發(fā)展?
- Arm 技術(shù)助力《國(guó)家地理》探險(xiǎn)家繪制地球海洋圖景
- Arm SME2 技術(shù)加速安卓 AI 升級(jí),驅(qū)動(dòng)移動(dòng)應(yīng)用下一代功能革新
- VGA接口定義、功能用途和種類(lèi)
- 有獎(jiǎng)直播:基于DLP® Pico™技術(shù)的TI桌面級(jí)DLP 3D打印、3D掃描及工業(yè)顯示應(yīng)用
- 【TI 培訓(xùn)】年度盤(pán)點(diǎn):2019 TI 培訓(xùn)課程集錦,好評(píng)有禮!
- 有獎(jiǎng)直播|TE帶您解讀物聯(lián)網(wǎng)中的智能天線設(shè)計(jì)趨勢(shì)及傳感器應(yīng)用案例
- EEWorld邀你來(lái)拆解(第五期):拆拆排插學(xué)評(píng)電路
- OMNIMATE® 4.0鼠籠式板載連接器
- 了解keysight汽車(chē)電子解決方案,答題贏好禮
- TI 處理器主題月:三場(chǎng)直播精彩這個(gè)八月!報(bào)名且看直播就能得好禮!更有提問(wèn)獎(jiǎng)相送!
- 走近PI InnoSwitch-CP 答題贏好禮~
- stm32內(nèi)核外設(shè)Systick與普通外設(shè)中斷優(yōu)先級(jí)比較的驗(yàn)證實(shí)驗(yàn)
- 東芝存儲(chǔ)要換名字啦,記憶的價(jià)值—“鎧俠”
- STM32F1系列單片機(jī)USB外設(shè)相關(guān)寄存器的定義
- STM32F103 DMA 通道對(duì)應(yīng)的外設(shè)
- STM32CubeMX圖形化配置軟件使用
- STM32F0:SD卡升級(jí)
- STM32F030和STM32F103的IO結(jié)構(gòu)上的區(qū)別
- STM32 讀保護(hù)功能和清除讀保護(hù)功能設(shè)置【轉(zhuǎn)】
- stm32內(nèi)存空間分配學(xué)習(xí)
- stm32后生成編譯文件大小探索
- 求助 怎樣控制3.5 TFTLCD
- AVR CP,CPC,比較指令是如何影響SREG標(biāo)志位的了
- EEWORLD大學(xué)堂----直播回放:MSP430 CapTIvate Lite: 成本優(yōu)化的電容觸摸微控制器
- DRV8711 始終UVLO報(bào)警
- xd2212無(wú)刷電機(jī),電調(diào),只響不轉(zhuǎn)
- 【為C2000做貢獻(xiàn)】聞亭DSP培訓(xùn)第2天全部資料
- 歡迎大家加入硬件技術(shù)交流群
- 剛?cè)胧謜ince,買(mǎi)了研華的pcm-3343的pc104,不會(huì)安裝wince到pc104中,求助!
- 補(bǔ)充:機(jī)房監(jiān)控項(xiàng)目的下位機(jī)設(shè)計(jì)
- (更新)出 游戲機(jī) 新唐m451 nuc505 nuc240 nanopi 網(wǎng)件路由器