數(shù)據(jù)如何保存到flash lpc1754

將數(shù)據(jù)保存到基于NXP LPC1754微控制器的Flash存儲(chǔ)器中,通常涉及以下步驟: 1. 硬件準(zhǔn)備確保你的LPC1754微控制器已經(jīng)正確配置,并且你的開(kāi)發(fā)環(huán)境(如K...
將數(shù)據(jù)保存到基于NXP LPC1754微控制器的Flash存儲(chǔ)器中,通常涉及以下步驟:
1. 硬件準(zhǔn)備
確保你的LPC1754微控制器已經(jīng)正確配置,并且你的開(kāi)發(fā)環(huán)境(如Keil uVision)已經(jīng)安裝并配置了相應(yīng)的硬件支持包。
2. 硬件特性了解
LPC1754的Flash存儲(chǔ)器通常具有以下特性:
可編程的存儲(chǔ)空間。
需要特定的命令序列來(lái)擦除和寫(xiě)入。
3. 開(kāi)發(fā)環(huán)境配置
在Keil uVision中,你需要確保你的項(xiàng)目設(shè)置正確,包括:
選擇正確的芯片型號(hào)。
設(shè)置正確的時(shí)鐘頻率。
選擇正確的Flash配置。
4. 編寫(xiě)代碼
以下是一個(gè)簡(jiǎn)單的示例,展示了如何在LPC1754上寫(xiě)入和讀取Flash:
寫(xiě)入Flash
```c
include "LPC17xx.h"
void FlashProgramWord(uint32_t FlashAddress, uint32_t Data) {
// 確保Flash地址是4字節(jié)對(duì)齊的
FlashAddress &= ~0x3;
// 禁用Flash訪問(wèn)
LPC_SC->PCONP = (1 << 6);
// 等待Flash準(zhǔn)備好
while (!(LPC_FMC->FMSTAT & (1 << 0)));
// 清除寫(xiě)保護(hù)
LPC_FMC->FWPKEY = 0x5A5A5AUL;
LPC_FMC->FWPKEY = 0xA5A5A5UL;
// 禁用寫(xiě)保護(hù)
LPC_FMC->FWPEN = 0x1;
// 等待寫(xiě)保護(hù)被清除
while (LPC_FMC->FWPEN);
// 禁用中斷
__disable_irq();
// 寫(xiě)入數(shù)據(jù)
LPC_FMC->FPROT = 0x0; // 設(shè)置保護(hù)位為0,表示整個(gè)Flash
LPC_FMC->FWADD = FlashAddress; // 設(shè)置Flash地址
LPC_FMC->FWDATA = Data; // 設(shè)置要寫(xiě)入的數(shù)據(jù)
LPC_FMC->FWKEY = 0x5A5A5AUL;
LPC_FMC->FWKEY = 0xA5A5A5UL;
// 等待寫(xiě)入完成
while (!(LPC_FMC->FMSTAT & (1 << 1)));
// 重新啟用中斷
__enable_irq();
// 重新啟用Flash訪問(wèn)
LPC_SC->PCONP &= ~(1 << 6);
本文鏈接:http:///bian/367640.html