前言
今天總結(jié)“STM32F103片內(nèi)FLASH編程”,對(duì)于學(xué)習(xí)編程的人來(lái)說(shuō)“FLASH”這個(gè)詞肯定很熟悉,因?yàn)镕LASH主要用于存儲(chǔ)數(shù)據(jù)。對(duì)于STM32來(lái)說(shuō),內(nèi)部FLASH的容量有大有小,從16K到2M不等,主要看芯片的型號(hào)。
對(duì)于剛從51或者430轉(zhuǎn)入學(xué)習(xí)ARM-Cortex M芯片的人來(lái)說(shuō),可能只知道內(nèi)部FLASH是拿來(lái)裝載程序的,事實(shí)上Cortex M芯片內(nèi)部FLASH的可以拿來(lái)編程的,而且還可以像外部FLASH一樣存儲(chǔ)數(shù)據(jù)。對(duì),今天提供的工程就是使用內(nèi)部FLASH像外部FLASH一樣讀寫數(shù)據(jù),而且不是塊或者頁(yè)編程(即不覆蓋臨近地址數(shù)據(jù))。
在實(shí)際的開發(fā)中,內(nèi)部FLASH存儲(chǔ)數(shù)據(jù)也是很重要的一點(diǎn),特別是一些不常修改,而且很重要的標(biāo)志位,或者一些配置等,存儲(chǔ)在內(nèi)部FLASH是很常見的。但是,這個(gè)地址一定要避開程序儲(chǔ)存的地址(我計(jì)劃后期整理編程地址規(guī)范及要求)。
每天總結(jié)的不僅僅是基礎(chǔ),而是重點(diǎn),不起眼的重點(diǎn),容易被人忽視的重點(diǎn)。關(guān)注微信公眾號(hào)“EmbeddDeveloper”還有更多精彩等著你。
下載
今天提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒問題才上傳至360云盤。
今天的軟件工程下載地址(360云盤):
https://yunpan.cn/cSFA6h6kwu5jb訪問密碼 bc34
STM32F10x的資料可以在我360云盤下載:
https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90
內(nèi)容講解
工程概要說(shuō)明: 提供工程的源代碼主要就是兩個(gè)接口,一個(gè)寫,一個(gè)讀。
void FLASH_WriteNWord(uint16_t* pBuffer, uint32_t WriteAddr, uint16_t nWord);
void FLASH_ReadNWord(uint16_t* pBuffer, uint32_t ReadAddr, uint16_t nWord);
相信經(jīng)常編程的人都明白函數(shù)接口的意思(我的命名規(guī)則還是算比較人性化的),就是和常見的訪問外部FLASH一樣,不會(huì)覆蓋數(shù)據(jù),我已經(jīng)在實(shí)際工作中應(yīng)用而且商業(yè)化了。
主要在地址“ADDR”處寫一個(gè)標(biāo)志位,在地址“ADDR + 1”連續(xù)寫一串?dāng)?shù)據(jù)。如果標(biāo)志位已經(jīng)是“寫過”,則不會(huì)再次寫入數(shù)據(jù),只會(huì)讀取數(shù)據(jù),意思就是說(shuō)數(shù)據(jù)只寫一次,以后每次只是讀取數(shù)據(jù)(就是保證掉電后數(shù)據(jù)會(huì)不會(huì)丟失)。每次讀取數(shù)據(jù),通過串口打印出以前寫入的數(shù)據(jù)是否正確。
提供的工程以簡(jiǎn)單為原則,詳細(xì)中文注釋,方便自己方便大家。
關(guān)于“STM32F103 片內(nèi)FLASH編程”我把重要的幾點(diǎn)在下面分別講述:
一、寫函數(shù)接口
該函數(shù)位于flash.c文件下面;
注意:
A.參數(shù)pBuffer是數(shù)據(jù)緩沖區(qū),是16位的,而不是8位的。(其實(shí)這里可以整理為8位的,由于時(shí)間有限,如果有需要,請(qǐng)微信里回復(fù)我,我抽時(shí)間整理一下)。
B.參數(shù)長(zhǎng)度也是16位的數(shù)量。
C.地址是內(nèi)部FLASH地址,可別溢出了,也別和程序沖突。最好看看你的程序大小及芯片容量。
二、讀函數(shù)接口
該函數(shù)位于flash.c文件下面;
注意的地方和上面寫函數(shù)接口一樣,主要是參數(shù)。
三、讀寫應(yīng)用
該函數(shù)位于main.c文件下面;
藍(lán)色表示讀寫標(biāo)志位
紅色表示讀寫數(shù)據(jù)
看一下就知道程序的流程是:“數(shù)據(jù)標(biāo)志位”和“數(shù)據(jù)”都只寫一次,而每次上電讀一次標(biāo)志位,再讀數(shù)據(jù)。
這里的“數(shù)據(jù)標(biāo)志位”地址就在“數(shù)據(jù)”前面。
四、今天的重點(diǎn)
重點(diǎn)A.頁(yè)的大小:STM32F1小、中容量是1K,而大容量是2K,對(duì)于編程這里是有差異的。
重點(diǎn)B.STM32系列芯片中有很大一部分頁(yè)的大小都是規(guī)則的,也就是說(shuō)都是1K或許2K大小,學(xué)過其他系列芯片的人可能知道,在其他很多芯片中也有不是規(guī)則的,如STM32F4中基本都不是規(guī)則的(如下圖F4芯片),有的一塊16K、128K等不規(guī)則。這樣的芯片對(duì)于今天提供的工程就不適用,今天提供工程適用于內(nèi)部FLASH規(guī)則大小的芯片。
說(shuō)明
今天提供的軟件工程基于STM32F103大容量芯片,中等及小容量芯片也使用,只要修改flash.h文件一個(gè)宏(頁(yè)大小就可以)。其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1的芯片都適用。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1656瀏覽量
150589 -
STM32F103
+關(guān)注
關(guān)注
33文章
481瀏覽量
64833 -
STM32F10
+關(guān)注
關(guān)注
0文章
46瀏覽量
15774
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
兆易創(chuàng)新推出GD5F1GM9系列高速Q(mào)SPI NAND Flash

兆易創(chuàng)新推出GD5F1GM9系列高速Q(mào)SPI NAND Flash
STM32F10xxx單片機(jī)編程手冊(cè)
STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)
STM32F103×8/STM32F103×B MCU手冊(cè)
請(qǐng)問stm32f373中SDADC和ADC的1.2V片內(nèi)基準(zhǔn)是不是同一個(gè)?
CYPRESS FLASH MCU Programmer for F2MC-16FX
【GD32 MCU 入門教程】二、GD32 MCU 燒錄說(shuō)明(1)ISP 燒錄

STM32F103xC,STM32F103xD,STM32F103xE中文資料
【GD32F303紅楓派開發(fā)板使用手冊(cè)】第五講 FMC-片內(nèi)Flash擦寫讀實(shí)驗(yàn)

Ti60F100 內(nèi)外flash操作方案

評(píng)論