wordpress foxpay企業(yè)站seo報價
以上部分,主存儲器:程序存儲器;
啟動程序代碼:系統(tǒng)存儲器;
用戶選擇字節(jié):選項字節(jié)
以下是閃存的管理員,用于擦除和讀寫的地址
C8T6一共64K,主存儲器為64頁
以下是整體框圖:
FLASH的整體流程:
1、解鎖+加鎖
通過鍵寄存器對FLASH進行解鎖(先用KEY1解鎖,再用KEY2解鎖),上一步完成后,要盡快加鎖:加鎖的時候在LOCK位寫1即可鎖住
2、使用指針訪問存儲器
讀取寄存器地址為0X08000000的內(nèi)容,將其強制轉(zhuǎn)換為16位的指針類型,前一個*表示:指針取內(nèi)容,將該地址下的內(nèi)容取出(不需要解鎖那一步,寫才需要)
__IO用了define定義為變量,當(dāng)編譯器沒有優(yōu)化的時候,這個可加可不加,但是當(dāng)編譯器優(yōu)化時,為防止有些必須代碼被優(yōu)化掉,可在其前加__IO,防止被優(yōu)化
3、全擦除過程
在程序中,并沒有判斷LOCK位是否為1的過程,直接執(zhí)行解鎖功能
也不會去讀出并驗證所有頁的數(shù)據(jù)
此時的信息塊(系統(tǒng)存儲器+選項字節(jié))不受影響
閃存頁擦除
4、寫編程
如果需要寫入很多數(shù)據(jù)就不斷調(diào)用寫入程序即可
5、選項字節(jié)的擦除(了解)
6、選項字節(jié)寫入(了解)
7、器件電子簽名(了解)
代碼部分:
首先是編寫MyFlash文件,包含寫編程、擦除和讀的程序;
之后再建立一個實現(xiàn)參數(shù)讀寫和存儲管理功能的Store,其中建立一個數(shù)組用于放置掉電不丟失的數(shù)據(jù),調(diào)用函數(shù)自動備份到Flash中;
之后在主函數(shù)通過寫入數(shù)據(jù)調(diào)用store的數(shù)組,并備份到Flash中,實現(xiàn)任意讀寫參數(shù),掉電不丟失功能
1、MyFlash
讀取函數(shù)(32位、16位、8位)
全擦除函數(shù)
頁擦除函數(shù):
編程字節(jié):
2、store模塊
(1)先定義一個SRAM數(shù)組,用于管理FLASH最后一頁數(shù)據(jù),實現(xiàn)參數(shù)的任意讀寫和保存,需要備份再統(tǒng)一轉(zhuǎn)到閃存中
512:16位2字節(jié)正好對應(yīng)閃存一頁1024字節(jié)
(2)判斷閃存是否是第一次初始化
判斷該頁地址下的第一個半字是否是A5A5——不是,則表明第一次初始化,先進行頁擦除——在該頁的第一個半字處寫入A5A5——將剩余的字節(jié)均寫為0
(2)上電后將閃存的數(shù)據(jù)全都轉(zhuǎn)移到SRAM中,保證掉電數(shù)據(jù)不丟失(閃存——SRAM的數(shù)據(jù)轉(zhuǎn)移)
(3)SRAM——閃存的數(shù)據(jù)轉(zhuǎn)換函數(shù)
(4)清除所有數(shù)據(jù)函數(shù)(先將SRAM的數(shù)據(jù)清零——再將數(shù)據(jù)從SRAM轉(zhuǎn)移到閃存)
主函數(shù):除了初始化各類函數(shù)外,主要實現(xiàn)按鍵1按下數(shù)據(jù)增加
按鍵2按下數(shù)據(jù)全部清0
數(shù)據(jù)掉電不丟失且復(fù)位也不會改變
實驗結(jié)果如下:
FLASH
讀取芯片ID:
直接在main中編寫:
顯示結(jié)果:
STM32江科大老師的視頻完結(jié)!