国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STM32詳解FLASH閃存編程原理與步驟】

這篇具有很好參考價值的文章主要介紹了【STM32詳解FLASH閃存編程原理與步驟】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

FLASH編程注意事項

1.STM32復位后,F(xiàn)PEC模塊是被保護的,不能寫入FLASH_CR寄存器:通過寫入特定的序列到FLASH_KEYR寄存器可以打開FPEC模塊(即寫入KEY1和KEY2),只有在寫保護被解除后,我們才能操作相關(guān)寄存器。叫Unlock,簡直不正確會產(chǎn)生總線錯誤。
2.STM32閃存的編程每次必須寫入16位(不能單純的寫入8位數(shù)據(jù)哦!),當FLASH_CR寄存器的PG位為’1’時,在一個閃存地址寫入一個半字將啟動一次編程;寫入任何非半字的數(shù)據(jù),F(xiàn)PEC都會產(chǎn)生總線錯誤。
3.在編程過程中(FLASH_SR的BSY位為’1’),任何讀寫閃存的操作都會使CPU暫停,知道此次閃存編程結(jié)束。
4.STM32的FLASH在編程的時候,也必須要求其寫入地址的FLASH是被擦除了的(也就是其值必須是0xFFFF),否則無法寫入,在FLASH_SR寄存器的PGERR位將得到一個警告。
stm32f334 flash編程,STM32,stm32,單片機,嵌入式,c語言,物聯(lián)網(wǎng),mcu,arm開發(fā)

FLASH編程過程

stm32f334 flash編程,STM32,stm32,單片機,嵌入式,c語言,物聯(lián)網(wǎng),mcu,arm開發(fā)1.檢查FLASH_CR的LOCK是否解鎖,如果沒有則先解鎖
2.檢查FLASH_SR寄存器的BSY位,以確認沒有其他正在進行的編程操作
3.設(shè)置FLASH_CR寄存器的PG位為’1’,在指定的地址寫入要編程的半字
4.等待BSY位變?yōu)椤?’
5.讀出寫入的地址并驗證數(shù)據(jù)

STM32的FLASH擦除過程

STM32FLASH編程的時候,要先判斷縮寫地址是否被擦除了,所以,我們有介紹STM32的閃存擦除過程很重要。

STM32的閃存擦除分為兩種:頁擦除和整片擦除。

stm32f334 flash編程,STM32,stm32,單片機,嵌入式,c語言,物聯(lián)網(wǎng),mcu,arm開發(fā)1.檢查FLASH_CR的LOCK是否解鎖, 如果沒有則先解鎖
2.檢查FLASH_SR寄存器的BSY位,以確認沒有其他正在進行的閃存操作
3.設(shè)置FLASH_CR寄存器的PER位為’1’
4.用FLASH_AR寄存器選擇要擦除的頁
5.設(shè)置FLASH_CR寄存器的STRT位為’1’
6.等待BSY位變?yōu)椤?’
7.讀出被擦除的頁并做驗證

FLASH全片擦除

stm32f334 flash編程,STM32,stm32,單片機,嵌入式,c語言,物聯(lián)網(wǎng),mcu,arm開發(fā)
1.檢查FLASH_SR寄存器的BSY位,已確定沒有其他操作在進行
2.設(shè)置FLASH_CR寄存器的MER位1;
3.設(shè)置FLASH_CR寄存器的STRT為1
4.等待BSY為0
5.讀出所有頁并驗證

FLASH操作總結(jié)

鎖定解鎖函數(shù)

在對FLASH進行寫操作前必須先解鎖,解鎖操作也就是必須在
FLASH_KEYR寄存器寫入特定的序列(KEY1和KEY2),固件庫函數(shù)實現(xiàn);
void FLASH_Unlock(void);
同樣的道理,在對FLASH寫操作完成之后,我們要鎖定FLASH
void FLASH_Lock(void);

寫操作函數(shù)

固件庫提供了三個FLASH寫函數(shù):

FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);

擦除函數(shù)

固件庫提供三個FLASH擦除函數(shù):

FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
FLASH_Status FLASH_EraseAllPages(void);
FLASH_Status FLASH_EraseOptionBytes(void);

第一個是也擦除函數(shù),根據(jù)頁地址擦除特定的頁數(shù)據(jù)
第二個函數(shù)是擦除所有的頁數(shù)據(jù)
第三個函數(shù)是擦除用戶選擇字節(jié)數(shù)據(jù)

獲取狀態(tài)函數(shù)

FLASH_Status FLASH_GetStatus(void);

返回值是通過枚舉類型定義的:

	typedef enum
	{
	FLASH_BUSY = 1,             //忙
	FLASH_ERROR_PG,             //編程錯誤
	FLASH_ERROR_WRP,            //寫保護錯誤
	FLASH_COMPLETE,             //操作完成
	FLASH_TIMEOUT               //操作超時
	}FLASH_Status;

等待操作完成函數(shù)

在執(zhí)行閃存寫操作時,任何對閃存的讀操作都會鎖住總線,在寫操作完成后讀操作才能正確地驚醒;即在進行寫或擦除操作時,不能進行代碼或數(shù)據(jù)的讀取操作。所以在每次操作之前,我們都要等待上一次操作完成這次操作才能開始。

FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);

入口參數(shù)為等待時間,返回值是FLAHS的狀態(tài),這個很容易理解,這個函數(shù)本身我們在固件庫中使用得不多,但是在固件庫函數(shù)體中間可以多次看到。

讀FLASH特定地址數(shù)據(jù)函數(shù)

讀取FLASH指定地址的半字的函數(shù)固件庫并沒有給出來,這里我們需要自己寫一個函數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-846443.html

u16  STMFLASH_ReadHalfWord(u32 faddr)
{
	return *(vu16*)faddr;
}

到了這里,關(guān)于【STM32詳解FLASH閃存編程原理與步驟】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32開發(fā)(十)STM32F103 通信 —— SPI通信編程詳解

    ??《上一篇》 ???《主目錄》 ???《下一篇》 本實驗通過STM32F103 的SPI功能,實現(xiàn)對W25Q64JVSSIQ (Flash芯片)芯片擦除,讀數(shù)據(jù),寫數(shù)據(jù)等操作。 本實驗內(nèi)容知識點: 1、SPI通信協(xié)議介紹 2、

    2024年02月07日
    瀏覽(25)
  • STM32開發(fā)(六)STM32F103 通信 —— RS485 Modbus通信編程詳解

    STM32開發(fā)(六)STM32F103 通信 —— RS485 Modbus通信編程詳解

    ??《上一篇》 ???《主目錄》 ???《下一篇》 了解 RS485 Modbus協(xié)議技術(shù) 。本實驗是基于STM32F103開發(fā) 實現(xiàn) 通過RS-485實現(xiàn)modbus協(xié)議。 準備好了嗎?開始我的show time。 1、硬件開發(fā)準備 主控:STM32F103ZET6 RS485收發(fā)器:SP3485P 2、軟件開發(fā)準備 軟件開發(fā)使用虛擬機 + VScode + STM32Cub

    2024年02月03日
    瀏覽(25)
  • STM32F103 內(nèi)部FLASH讀寫擦操作

    STM32F103 內(nèi)部FLASH讀寫擦操作

    (1)解鎖和鎖定 前面我們介紹了在對 FLASH 進行寫操作前必須先解鎖,解鎖操作也就是必 須在 FLASH_KEYR 寄存器寫入特定的序列(0X45670123 和 0XCDEF89AB),固件庫 提供了一個解鎖函數(shù),其實就是封裝了對 FLASH_KEYR 寄存器的操作。 解鎖庫函數(shù)是: void FLASH_Unlock(void); 在對 FLASH 寫操

    2024年02月15日
    瀏覽(29)
  • STM32F103C8T6(HAL庫函數(shù) - 內(nèi)部Flash操作)

    STM32F103C8T6(HAL庫函數(shù) - 內(nèi)部Flash操作)

    STM32F103C8T6 內(nèi)部Flash 為 64KB,本次將對他多余空間進行讀寫。 數(shù)據(jù)手冊下載 STM32F103x8/STM32F103xB 數(shù)據(jù)手冊 包含F(xiàn)lash Memory Page分布 STM32F設(shè)備命名 設(shè)備容量類型 中容量類型 內(nèi)部空間介紹 Flash Memory 從 0x0800 0000 ~ 0x0801 FFFF 頁分布1K每頁, STM32F103C8T6 只有64KByte, 那就是64頁 使用 controll

    2024年01月21日
    瀏覽(31)
  • 【正點原子STM32連載】 第四十五章 FLASH模擬EEPROM實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點原子STM32連載】 第四十五章 FLASH模擬EEPROM實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    STM32本身沒有自帶EEPROM,但是STM32具有IAP(在應用編程)功能,所以我們可以把它的FLASH當成EEPROM來使用。本章,我們將利用STM32內(nèi)部的FLASH來實現(xiàn)第三十六章實驗類似的效果,不過這次我們是將數(shù)據(jù)直接存放在STM32內(nèi)部,而不是存放在NOR FLASH。 本章分為如下幾個小節(jié): 45.1 ST

    2024年02月08日
    瀏覽(24)
  • STM32F103C8用內(nèi)部Flash做一個優(yōu)盤(USB+MSC+FATFS)

    STM32F103C8用內(nèi)部Flash做一個優(yōu)盤(USB+MSC+FATFS)

    STM32F103C8用內(nèi)部Flash做一個優(yōu)盤(USB+MSC+FATFS),輕松實現(xiàn)APP升級、數(shù)據(jù)存儲。 直接使用STM32CubeMX生成基本的工程,省得我們?nèi)フ{(diào)底層。 時鐘配置為外部8MHz晶振,這個需要根據(jù)自己開發(fā)板的晶振選擇。? 啟用SWD下載和滴答定時器 ?啟用USB ?啟用FATFS,MAX_SS和MIN_SS設(shè)置為1024。 ?配

    2024年02月14日
    瀏覽(35)
  • STM32—Flash讀寫詳解

    STM32—Flash讀寫詳解

    目錄 前言 介紹 STM32 FLASH 閃存的編程和擦除 Flash讀寫的標準庫函數(shù) 軟件設(shè)計 FLASH的讀取 直接讀取某一地址的內(nèi)容 讀取選定位置的選定大小的內(nèi)容 FLASH的寫入 直接使用標準庫寫入 寫入選定位置的選定大小的內(nèi)容 如何在Keil 5中查看Flash某地址的內(nèi)容 本文主要介紹STM32多種的內(nèi)

    2024年02月09日
    瀏覽(46)
  • STM32內(nèi)部flash詳解(1)

    STM32內(nèi)部flash詳解(1)

    今天說一下STM32中的內(nèi)部flash。 當我們把寫好的代碼下載MCU中,這個代碼時存放在flash中的。當芯片重啟復位上電后,會通過內(nèi)核對flash進行代碼的加載運行。大致是這個過程。 flash讀操作 flash編程/擦除操作 讀寫保護 I-Code 上的預取操作 I-Code 上的 64 個緩存(128 位寬) D-Code

    2024年02月04日
    瀏覽(45)
  • STM32——STM32F401x系列標準庫的下載+環(huán)境搭建+建工程步驟(更完整)

    STM32——STM32F401x系列標準庫的下載+環(huán)境搭建+建工程步驟(更完整)

    1.STM32標準庫的官網(wǎng)下載網(wǎng)站https://www.st.com/content/st_com/en.html 2. 3. 4. 5. 6. 7.點擊之后下滑 8.選擇自己需要的版本下載 大致步驟同之前我寫的一篇STM32——建工程差不多,但是當時是現(xiàn)成的標準庫文件,芯片是STM32F103系列的,下面我重寫一次,芯片為STM32F401X,當然本篇文章幾乎適

    2024年02月14日
    瀏覽(39)
  • STM32F407 GPIO口輸出配置配置步驟

    STM32F407 GPIO口輸出配置配置步驟

    STM32F407ZGT6 是意法半導體(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一員,具備強大的處理能力和豐富的外設(shè)功能,適用于各種應用領(lǐng)域。 說明:STM32F4 的主頻最高是 168Mhz,所以我們一般設(shè)置 PLLCLK 為 168Mhz(M=8,N=336,P=2),通

    2024年02月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包