1. 在默認情況下,只有執行FLASH設置(延遲,預取指,半周期)的函數式允許執行的。
如果想要執行FLASH編寫/擦除/保護函數,必須在文件“stm32f10x_conf.h”中定義_FLASH_PROG如下:
#define _FLASH_PROG
2.按照不同容量,存儲器組織成32個1K字節/頁(小容量)、128個1K字節/頁(中容量),萬利板子是中容量
#define FLASH_PAGE_SIZE ((u16)0x400) //一頁為1024個字節
3.
/* Get pages write protection status */
WRPR_Value = FLASH_GetWriteProtectionOptionByte();
ProtectedPages = WRPR_Value & 0x000000C0; //后面要對24頁到27頁,28頁到31頁進行操作,所以要獲得其對應的寫保護狀態
#ifdef WriteProtection_Disable
if (ProtectedPages == 0x00)
{/* Pages are write protected */
/* Disable the write protection */
FLASHStatus = FLASH_EraseOptionBytes();
/* Generate System Reset to load the new option byte values */
NVIC_GenerateSystemReset();
}
#else
#ifdef WriteProtection_Enable
if (ProtectedPages != 0x00)
{/* Pages not write protected */
/* Enable the pages write protection */
FLASHStatus = FLASH_EnableWriteProtection(FLASH_WRProt_Pages24to27 |FLASH_WRProt_Pages28to31);
/* Generate System Reset to load the new option byte values */
NVIC_GenerateSystemReset();
}
#endif
#endif
關鍵字:STM32 Flash
引用地址:
STM32之Flash
推薦閱讀最新更新時間:2025-06-04 06:15
STM32 flash讀寫程序
static void RCC_Configuration(void); /******************************************************************** * 函數名 : main * 函數描述 : Main 函數 * 輸入參數 : 無 * 輸出結果 : 無 * 返回值 : 無 ********************************************************************/ int main(void) { u32 cnt = 0; u16 data = {0x0001, 0x0002, 0x0003, 0x
[單片機]
關于STM32像EPROM一樣可以單字節寫內部Flash的理解
都有說STM32的內部Flash可以像EPROM一樣操作,單個字節單個字節的寫入。根據本人的拙見,其實也就僅僅是“像”而已。原因有以下幾點: 1.首先Flash這種東西,其寫入數據的原理是便是將1變成0,所以你的某地址Flash一旦已經寫過數據而且不為0,則當你再次需要向該地址寫數據時,必須要先擦除,即把該地址先全部變成1,否則你將數據寫入該地址后,基本上該地址里面的值已經不是你寫入的值了。 2.STM32對內部Flash有頁(1k或者2K)擦除指令,也就是STM32不能單獨對某一個或者某幾個字節進行擦除。而擦除操作并不需要大量內存。 3.如果要像EPROM一樣操作Flash,其原理是先把該一頁里面的數據全部讀到一個b
[單片機]
S3C2440-裸機篇-10 | 使用S3C2440操作Nand Flash
1. Nor Flash與Nand Flash Nor Nand 接口 引腳多,類似于RAM 引腳較少 容量 小(1-32MB) 大(128-512MB) 讀操作 簡單,和RAM相同 簡單,和RAM相同 寫操作 發出特定命令才能寫入 發出特定命令才能寫入 價格 貴 便宜 比較 無壞塊 有壞塊 XIP 可以 不可以 應用場合 存儲關鍵性代碼(比如uboot,kernel) 存儲海量數據(允許錯誤) 2. JZ2440開發板上的Nand Flash JZ2440開發板上板載了一個Nand Flash,型號為K9F2G08U0C,大小為256MB,連接在S3C2440的nand控制器上,原理圖如下:
[單片機]
STM32F1_片內FLASH編程
前言 今天總結“STM32F103 片內FLASH編程”,對于學習編程的人來說“FLASH”這個詞肯定很熟悉,因為FLASH主要用于存儲數據。對于STM32來說,內部FLASH的容量有大有小,從16K到2M不等,主要看芯片的型號。 對于剛從51或者430轉入學習ARM-Cortex M芯片的人來說,可能只知道內部FLASH是拿來裝載程序的,事實上Cortex M芯片內部FLASH的可以拿來編程的,而且還可以像外部FLASH一樣存儲數據。對,今天提供的工程就是使用內部FLASH像外部FLASH一樣讀寫數據,而且不是塊或者頁編程(即不覆蓋臨近地址數據)。 在實際的開發中,內部FLASH存儲數據也是很重要的一點,特別是一些不常修
[單片機]
如何將MSP430單片機中的long數據燒寫至Flash中去
從RAM地址0x0200中讀取一個long數據,并燒寫至地址為0x1800的Flash中。 代碼: #include“io430.h” void main(void) { //初始化RAM信息段的指針 unsigned long * RAM_ptr = (unsigned long *) 0x0200; //初始化Flash信息段的指針 unsigned long * Flash_ptr = (unsigned long *) 0x1800; //存放數據的變量 unsigned long value; WDTCTL = WDTPW + WDTHOLD; //關閉看門狗 P4DIR |= BIT2; //設置P4.2為輸出
[單片機]
TX2440 ARM開發板Uboot移植(三、添加Nand Flash的有關操作支持)
在上一節中我們說過,通常在嵌入式bootloader中,有兩種方式來引導啟動內核:從Nor Flash啟動和從Nand Flash啟動,但不管是從Nor啟動或者從Nand啟動,進入第二階段以后,兩者的執行流程是相同的。當u-boot的start.S運行到“_start_armboot: .word start_armboot”時,就會調用lib_arm/board.c中的start_armboot函數,至此u-boot正式進入第二階段。此時注意:以前較早的u-boot版本進入第二階段后,對Nand Flash的支持有新舊兩套代碼,新代碼在drivers/nand目錄下,舊代碼在drivers/nand_legacy目錄下,CFG_
[單片機]
STM32F0(10)片內 FLASH 操作
void Flash_Init(void) { // 調整flash與時鐘速率之間的關系 FLASH- ACR |= FLASH_ACR_LATENCY; } void Flash_Unlock(void) { // FLASH- CR 的第7位為解鎖的標志位或者上鎖的操作位 while(FLASH- CR & FLASH_CR_LOCK) { FLASH- KEYR = FLASH_FKEY1; FLASH- KEYR = FLASH_FKEY2; } } void Flash_Lock(void) { FLASH- CR |= FLASH_CR_LOCK; } void Flash_Clear_All_Flag(void) {
[單片機]
淺談FLASH芯片在液晶顯示器中作用
一、液晶顯示器中常用芯片類型 1.液晶顯示器中常用MCU 液晶顯示器的發展經歷了從多芯片到單芯片的發展過程,無論采用哪種方案,都必須有MCU來完成機器控制和圖像顯示。下面介紹一下液晶顯示器常用的MCU. 液晶顯示器和電視機所用的MCU是集成了運算器、控制器、存儲器(也可外置)、輸人輸出功能的單片機,常用的有4位(如鍵盤控制器、遙控器)、8位、l6位和32位(如掌上電腦等嵌入式設備),仍有DIP和PLCC兩種封裝形式,最小的單片機是MICROCHIP公司生產的8位PIC10F(6引腳、SOT-23封裝)。 正常情況下,MCU的vcc供電、OSC振蕩源、RESET復位、接地端都固定,而IO端口的功能設置隨
[單片機]