3 STM32标准库函数 之 FLASH存储器所有函数的介绍及使用
- 1. 图片有格式
- 2 文字无格式
- 二、FLASH 库函数固件库函数预览
- 2.1 函数FLASH_SetLatency
- 2.2 函数FLASH_HalfCycleAccessCmd
- 2.3 函数FLASH_PrefetchBufferCmd
- 2.4 函数FLASH_Unlock
- 2.5 函数FLASH_Lock
- 2.6 函数FLASH_ErasePage
- 2.7 函数FLASH_EraseAllPages
- 2.8 函数FLASH_EraseOptionBytes
- 2.9 函数FLASH_ProgramWord
- 2.10 函数FLASH_ProgramHalfWord
- 2.11 函数FLASH_ProgramOptionByteData
- 2.12 函数FLASH_EnableWriteProtection
- 2.13 函数FLASH_ReadOutProtection
- 2.14 函数FLASH_UserOptionByteConfig
- 2.15 函数FLASH_GetUserOptionByte
- 2.16 函数FLASH_GetWriteProtectionOptionByte
- 2.17 函数FLASH_GetReadOutProtectionStatus
- 2.18 函数FLASH_GetPrefetchBufferStatus
- 2.19 函数FLASH_ITConfig
- 2.20 函数FLASH_GetFlagStatus
- 2.21 函数FLASH_ClearFlag
- 2.22 函数FLASH_GetStatus
- 2.23 函数FLASH_WaitForLastOperation
- 该文档修改记录:
- 总结
函数描述格式:
函数名 | 外设函数的名称 |
---|---|
函数原形 | 原形声明 |
功能描述 | 简要解释函数是如何执行的 |
输入参数{x} | 输入参数描述 |
输出参数{x} | 输出参数描述 |
返回值 | 函数的返回值 |
先决条件 | 调用函数前应满足的要求 |
被调用函数 | 其他被该函数调用的库函数 |
缩写定义
缩写 | 外设/单元 |
---|---|
ADC | 模数转换器 |
BKP | 备份寄存器 |
CAN | 控制器局域网模块 |
DMA | 直接内存存取控制器 |
EXTI | 外部中断事件控制器 |
FLASH | 闪存存储器 |
GPIO | 通用输入输出 |
I2C | 内部集成电路 |
IWDG | 独立看门狗 |
NVIC | 嵌套中断向量列表控制器 |
PWR | 电源/功耗控制 |
RCC | 复位与时钟控制器 |
RTC | 实时时钟 |
SPI | 串行外设接口 |
SysTick | 系统嘀嗒定时器 |
TIM | 通用定时器 |
TIM1 | 高级控制定时器 |
USART | 通用同步异步接收发射端 |
WWDG | 窗口看门狗 |
1. 图片有格式
因为从OneNote复制到CSDN上只能是图片,粘贴不了文字,所以就显示图片,在该博客后半部分会补充上相关函数的文字。
如果只是学习了解函数可以看图片,图片有格式,比较友好;需要使用某个函数,可以去博客后半部分copy使用。
2 文字无格式
二、FLASH 库函数固件库函数预览
函数名 描述
FLASH_SetLatency 设置代码延时值
FLASH_HalfCycleAccessCmd 使能或者失能 FLASH 半周期访问
FLASH_PrefetchBufferCmd 使能或者失能预取指缓存
FLASH_Unlock 解锁 FLASH 编写擦除控制器
FLASH_Lock 锁定 FLASH 编写擦除控制器
FLASH_ErasePage 擦除一个 FLASH 页面
FLASH_EraseAllPages 擦除全部 FLASH 页面
FLASH_EraseOptionBytes 擦除 FLASH 选择字节
FLASH_ProgramWord 在指定地址编写一个字
FLASH_ProgramHalfWord 在指定地址编写半字
FLASH_ProgramOptionByteData 在指定 FLASH 选择字节地址编写半字
FLASH_EnableWriteProtection 对期望的页面写保护
FLASH_ReadOutProtection 使能或者失能读出保护
FLASH_UserOptionByteConfig 编写 FLASH 用户选择字节:IWDG_SW /RST_STOP
/RST_STDBY
FLASH_GetUserOptionByte 返回 FLASH 用户选择字节的值
FLASH_GetWriteProtectionOptionByte 返回 FLASH 写保护选择字节的值
FLASH_GetReadOutProtectionStatus 检查 FLASH 读出保护设置与否
FLASH_GetPrefetchBufferStatus 检查 FLASH 预取指缓存设置与否
FLASH_ITConfig 使能或者失能指定 FLASH 中断
FLASH_GetFlagStatus 检查指定的 FLASH 标志位设置与否
FLASH_ClearFlag 清除 FLASH 待处理标志位
FLASH_GetStatus 返回 FLASH 状态
FLASH_WaitForLastOperation 等待某一个 Flash 操作完成,或者发生 TIMEOUT
2.1 函数FLASH_SetLatency
函数名 FLASH_SetLatency
函数原形 void FLASH_SetLatency(u32 FLASH_Latency)
功能描述 设置代码延时值
输入参数 FLASH_Latency:指定 FLASH_Latency 的值
参阅 Section:FLASH_Latency 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_Latency
FLASH_Latency 用来设置 FLASH 存储器延时时钟周期数。
FLASH_Latency 描述
FLASH_Latency_0 0 延时周期
FLASH_Latency_ 1 1 延时周期
FLASH_Latency_2 2 延时周期
例:
/* Configure the Latency cycle: Set 2 Latency cycles */
FLASH_SetLatency(FLASH_Latency_2);
2.2 函数FLASH_HalfCycleAccessCmd
函数名 FLASH_HalfCycleAccessCmd
函数原形 void FLASH_HalfCycleAccessCmd(u32 FLASH_HalfCycleAccess)
功能描述 使能或者失能 FLASH 半周期访问
输入参数 FLASH_HalfCycleAccess:FLASH_HalfCycle 访问模式
参阅 Section:FLASH_HalfCycle 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_HalfCycleAccess
FLASH_HalfCycleAccess 用来选择 FLASH 半周期访问的模式。
FLASH_HalfCycleAccess 描述
FLASH_HalfCycleAccess_Enable 半周期访问使能
FLASH_HalfCycleAccess_Disable 半周期访问失能
例:
/* Enable the Half Cycle Flash access */
FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Enable);
2.3 函数FLASH_PrefetchBufferCmd
__
函数名 FLASH_PrefetchBufferCmd
函数原形 void FLASH_PrefetchBufferCmd(u32 FLASH_PrefetchBuffer)
功能描述 使能或者失能预取指缓存
输入参数 FLASH_PrefetchBuffer:预取指缓存状态
参阅 Section:FLASH_PrefetchBuffer 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_PrefetchBuffer
FLASH_PrefetchBuffer 用来选择 FLASH 预取指缓存的模式。
_
FLASH_PrefetchBuffer 描述
FLASH_PrefetchBuffer_Enable 预取指缓存使能
FLASH_PrefetchBuffer_Disable 预取指缓存失能
例:
/* Enable The Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
2.4 函数FLASH_Unlock
函数名 FLASH_Unlock
函数原形 void FLASH_Unlock(void)
功能描述 解锁 FLASH 编写擦除控制器
输入参数 无
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Unlocks the Flash
FLASH_Unlock();
2.5 函数FLASH_Lock
函数名 FLASH_Lock
函数原形 void FLASH_Lock(void)
功能描述 锁定 FLASH 编写擦除控制器
输入参数 无
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Locks the Flash */
FLASH_Lock();
2.6 函数FLASH_ErasePage
函数名 FLASH_ErasePage
函数原形 FLASH_Status FLASH_ErasePage(u32 Page_Address)
功能描述 擦除一个 FLASH 页面
输入参数 无
输出参数 无
返回值 擦除操作状态
先决条件 无
被调用函数 无
例:
/* Erases the Flash Page 0 */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_ErasePage(0x08000000);
2.7 函数FLASH_EraseAllPages
函数名 FLASH_EraseAllPages
函数原形 FLASH_Status FLASH_EraseAllPages(void)
功能描述 擦除全部 FLASH 页面
输入参数 无
输出参数 无
返回值 擦除操作状态
先决条件 无
被调用函数 无
例:
/* Erases the Flash */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_EraseAllPages();
2.8 函数FLASH_EraseOptionBytes
函数名 FLASH_EraseOptionBytes
函数原形 FLASH_Status FLASH_EraseOptionBytes(void)
功能描述 擦除 FLASH 选择字节
输入参数 无
输出参数 无
返回值 擦除操作状态
先决条件 无
被调用函数 无
例:
/* Erases the Flash Option Bytes */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_EraseOptionBytes();
2.9 函数FLASH_ProgramWord
函数名 FLASH_ProgramWord
函数原形 FLASH_Status FLASH_ProgramWord(u32 Address, u32 Data)
功能描述 在指定地址编写一个字
输入参数 1 Address:待编写的地址
输入参数 2 Data:待写入的数据
输出参数 无
返回值 编写操作状态
先决条件 无
被调用函数 无
例:
/* Writes the Data1 at the Address1 */
FLASH_Status status = FLASH_COMPLETE;
u32 Data1 = 0x1234567;
u32 Address1 = 0x8000000;
status = FLASH_ProgramWord(Address1, Data1);
2.10 函数FLASH_ProgramHalfWord
函数名 FLASH_ProgramHalfWord
函数原形 FLASH_Status FLASH_ProgramHalfWord(u32 Address, u16 Data)
功能描述 在指定地址编写半字
输入参数 1 Address:待编写的地址
输入参数 2 Data:待写入的数据
输出参数 无
返回值 编写操作状态
先决条件 无
被调用函数 无
例:
/* Writes the Data1 at the Address1 */
FLASH_Status status = FLASH_COMPLETE;
u16 Data1 = 0x1234;
u32 Address1 = 0x8000004;
status = FLASH_ProgramHalfWord(Address1, Data1);
2.11 函数FLASH_ProgramOptionByteData
函数名 FLASH_ProgramOptionByteData
函数原形 FLASH_Status FLASH_ProgramOptionByteData(u32 Address, u8 Data)
功能描述 在指定 FLASH 选择字节地址编写半字
输入参数 1 Address:待编写的地址,该参数取值可以是 0x1FFF804 或者 0x1FFF806
输入参数 2 Data:待写入的数据
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Writes the Data1 at the Address1 */
FLASH_Status status = FLASH_COMPLETE;
u8 Data1 = 0x12;
u32 Address1 = 0x1FFFF804;
status = FLASH_ProgramOptionByteData(Address1, Data1);
2.12 函数FLASH_EnableWriteProtection
函数名 FLASH_EnableWriteProtection
函数原形 FLASH_Status FLASH_EnableWriteProtection(u32 FLASH_Pages)
功能描述 对期望的页面写保护
输入参数 FLASH_Page:待写保护页面的地址
参阅 Section:FLASH_Page 查阅更多该参数允许取值范围
输出参数 无
返回值 写保护操作状态
先决条件 无
被调用函数 无
FLASH Page 值
FLASH_Page 描述
FLASH_WRProt_Pages0to3 写保护页面 0 到 3
FLASH_WRProt_Pages4to7 写保护页面 4 到 7
FLASH_WRProt_Pages8to11 写保护页面 8 到 11
FLASH_WRProt_Pages12to15 写保护页面 12 到 15
FLASH_WRProt_Pages16to19 写保护页面 16 到 19
FLASH_WRProt_Pages20to23 写保护页面 20 到 23
FLASH_WRProt_Pages24to27 写保护页面 24 到 27
FLASH_WRProt_Pages28to31 写保护页面 28 到 31
FLASH_WRProt_Pages32to35 写保护页面 32 到 35
FLASH_WRProt_Pages36to39 写保护页面 36 到 39
FLASH_WRProt_Pages40to43 写保护页面 40 到 43
FLASH_WRProt_Pages44to47 写保护页面 44 到 47
FLASH_WRProt_Pages48to51 写保护页面 58 到 51
FLASH_WRProt_Pages52to55 写保护页面 52 到 55
FLASH_WRProt_Pages56to59 写保护页面 56 到 59
FLASH_WRProt_Pages60to63 写保护页面 60 到 63
FLASH_WRProt_Pages64to67 写保护页面 64 到 67
FLASH_WRProt_Pages68to71 写保护页面 68 到 71
FLASH_WRProt_Pages72to75 写保护页面 72 到 75
FLASH_WRProt_Pages76to79 写保护页面 76 到 79
FLASH_WRProt_Pages80to83 写保护页面 80 到 83
FLASH_WRProt_Pages84to87 写保护页面 84 到 87
FLASH_WRProt_Pages88to91 写保护页面 88 到 91
FLASH_WRProt_Pages92to95 写保护页面 92 到 95
FLASH_WRProt_Pages96to99 写保护页面 92 到 99
FLASH_WRProt_Pages100to103 写保护页面 100 到 103
FLASH_WRProt_Pages104to107 写保护页面 104 到 107
FLASH_WRProt_Pages108to111 写保护页面 108 到 111
FLASH_WRProt_Pages112to115 写保护页面 112 到 115
FLASH_WRProt_Pages116to119 写保护页面 115 到 119
FLASH_WRProt_Pages120to123 写保护页面 120 到 123
FLASH_WRProt_Pages124to127 写保护页面 124 到 127
FLASH_WRProt_AllPages 写保护全部页面
例:
/* Protects the Pages0to3 and Pages108to111 */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_EnableWriteProtection
(FLASH_WRProt_Pages0to3|FLASH_WRProt_Pages108to111);
2.13 函数FLASH_ReadOutProtection
__
函数名 FLASH_ReadOutProtection
函数原形 FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState)
功能描述 使能或者失能读出保护
输入参数 NewState:读出保护的新状态。
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 保护操作状态
先决条件 如果用户在调用本函数之前编写过其他选择字节,那么必须在调用本函数之 后重新编写选择字节,因为本操作会擦除所有选择字节
被调用函数 无
例:
/* Disables the ReadOut Protection */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_ReadOutProtection(DISABLE);
注意:为了安全地编写选择字节,用户必须遵从下列操作步骤:
-
如果想要读保护 Flash 存储器,调用函数 FLASH_ReadOutProtection
-
调用函数 FLASH_EnableWriteProtection 来写保护 Flash 存储器部分或者全部页面
-
调用函数 FLASH_UserOptionByteConfig 来设置用户选择字节: IWDG_SW /RST_STOP /RST_STDBY 4. 调用函数 FLASH_ProgramOptionByteData 来对指定选择字节数据地址写入半字
-
产生复位以装入新的选择字节
2.14 函数FLASH_UserOptionByteConfig
函数名 FLASH_UserOptionByteConfig
函数原形 FLASH_Status FLASH_UserOptionByteConfig(u16 OB_IWDG, u16 OB_STOP, u16 OB_STDBY)
功能描述 编写 FLASH 用户选择字节: IWDG_SW /RST_STOP /RST_STDBY
输入参数 1 OB_IWDG:选择 IWDG 模式
参阅 Section:OB_IWDG 查阅更多该参数允许取值范围
输入参数 2 OB_STOP:当进入 STOP 模式产生复位事件
参阅 Section:OB_STOP 查阅更多该参数允许取值范围
输入参数 3 OB_STDBY:当进入 Standby 模式产生复位事件
参阅 Section:OB_STDBY 查阅更多该参数允许取值范围
输出参数 无
返回值 选择字节编写状态
先决条件 无
被调用函数 无
OB IWDG 值
_
OB_IWDG 描述
OB_IWDG_SW 选择软件独立看门狗
OB_IWDG_HW 选择硬件独立看门狗
OB_STOP 值
_
OB_STOP 描述
OB_STOP_NoRST 进入 STOP 模式不产生复位
OB_STOP_RST 进入 STOP 模式产生复位
OB_STDBY 值
_
OB_STDBY 描述
OB_STDBY_NoRST 进入 Standby 模式不产生复位
OB_STDBY_RST 进入 Standby 模式产生复位
例:
/* Option Bytes Configuration: software watchdog, Reset generation
when entering in STOP and No reset generation when entering in
STANDBY */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_UserOptionByteConfig(OB_IWDG_SW, OB_STOP_RST,
OB_STDBY_NoRST);
2.15 函数FLASH_GetUserOptionByte
函数名 FLASH_GetUserOptionByte
函数原形 u32 FLASH_GetUserOptionByte(void)
功能描述 返回 FLASH 用户选择字节的值
输入参数 无
输出参数 无
返回值 FLASH 用户选择字节的值: IWDG_SW(Bit0),
RST_STOP(Bit1) and RST_STDBY(Bit2)
先决条件 无
被调用函数 无
例:
/* Gets the user option byte values */
u32 UserByteValue = 0x0;
u32 IWDGValue = 0x0, RST_STOPValue = 0x0, RST_STDBYValue = 0x0;
UserByteValue = FLASH_GetUserOptionByte();
IWDGValue = UserByteValue & 0x0001;
RST_STOPValue = UserByteValue & 0x0002;
RST_STDBYValue = UserByteValue & 0x0004;
2.16 函数FLASH_GetWriteProtectionOptionByte
函数名 FLASH_GetWriteProtectionOptionByte
函数原形 u32 FLASH_GetWriteProtectionOptionByte(void)
功能描述 返回 FLASH 写保护选择字节的值
输入参数 无
输出参数 无
返回值 FLASH 写保护选择字节的值
先决条件 无
被调用函数 无
例:
/* Gets the Write Protection option byte values */
u32 WriteProtectionValue = 0x0;
WriteProtectionValue = FLASH_GetWriteProtectionOptionByte();
2.17 函数FLASH_GetReadOutProtectionStatus
函数名 FLASH_GetReadOutProtectionStatus
函数原形 FlagStatus FLASH_GetReadOutProtectionStatus(void)
功能描述 检查 FLASH 读出保护设置与否
输入参数 无
输出参数 无
返回值 FLASH 读出保护状态(SET 或者 RESET)
先决条件 无
被调用函数 无
例:
/* Gets the ReadOut Protection status */
FlagStatus status = RESET;
status = FLASH_GetReadOutProtectionStatus();
2.18 函数FLASH_GetPrefetchBufferStatus
函数名 FLASH_GetPrefetchBufferStatus
函数原形 FlagStatus FLASH_GetPrefetchBufferStatus(void)
功能描述 检查 FLASH 预取指缓存设置与否
输入参数 无
输出参数 无
返回值 FLASH 预取指缓存状态(SET 或者 RESET)
先决条件 无
被调用函数 无
例:
/* Gets the Prefetch Buffer status */
FlagStatus status = RESET;
status = FLASH_GetPrefetchBufferStatus();
2.19 函数FLASH_ITConfig
函数名 FLASH_ITConfig
函数原形 void FLASH_ITConfig(u16 FLASH_IT, FunctionalState NewState)
功能描述 使能或者失能指定 FLASH 中断
输入参数 1 FLASH_IT:待使能或者失能的指定 FLASH 中断源
参阅 Section:FLASH_IT 查阅更多该参数允许取值范围
输入参数 2 NewState:指定 FLASH 中断的新状态。
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_IT
FLASH_IT 用来使能或者失能指定的 FLASH 中断。
_
FLASH_IT 描述
FLASH_IT_ERROR FPEC 错误中断源
FLASH_ IT_EOP FLASH 操作结束中断源
例:
/* Enables the EOP Interrupt source */
FLASH_ITConfig(FLASH_IT_EOP, ENABLE);
2.20 函数FLASH_GetFlagStatus
函数名 FLASH_GetFlagStatus
函数原形 FlagStatus FLASH_GetFlagStatus(u16 FLASH_FLAG)
功能描述 检查指定的 FLASH 标志位设置与否
输入参数 FLASH_FLAG:待检查的标志位
参阅 Section:FLASH_FLAG 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_FLAG 值
_
FLASH_FLAG 描述
FLASH_FLAG_BSY FLASH 忙标志位
FLASH_FLAG_EOP FLASH 操作结束标志位
FLASH_FLAG_PGERR FLASH 编写错误标志位
FLASH_FLAG_WRPRTERR FLASH 页面写保护错误标志位
FLASH_FLAG_OPTERR FLASH 选择字节错误标志位
例:
/* Checks whether the EOP Flag Status is SET or not */
FlagStatus status = RESET;
status = FLASH_GetFlagStatus(FLASH_FLAG_EOP);
2.21 函数FLASH_ClearFlag
函数名 FLASH_ClearFlag
函数原形 void FLASH_ClearFlag(u16 FLASH_Flag)
功能描述 清除 FLASH 待处理标志位
输入参数 FLASH_FLAG:待清除的标志位
参阅 Section:FLASH_FLAG 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
FLASH_FLAG
FLASH_FLAG 为能够被函数 FLASH_ClearFlag 清除的标志位。
_
FLASH_FLAG 描述
FLASH_FLAG_BSY FLASH 忙标志位
FLASH_FLAG_EOP FLASH 操作结束标志位
FLASH_FLAG_PGERR FLASH 编写错误标志位
FLASH_FLAG_WRPRTERR FLASH 页面写保护错误标志位
例:
/* Clears all flags */
_C_FFLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGER
2.22 函数FLASH_GetStatus
函数名 FLASH_GetStatus
函数原形 FLASH_Status FLASH_GetStatus(void)
功能描述 返回 FLASH 状态
输入参数 无
输出参数 无
返回值 FLASH_Status:返回值可以是: FLASH_BUSY,
FLASH_ERROR_PG ,FLASH_ERROR_WRP 或者
FLASH_COMPLETE
先决条件 无
被调用函数 无
例:
/* Check for the Flash status */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_GetStatus();
2.23 函数FLASH_WaitForLastOperation
函数名 FLASH_WaitForLastOperation
函数原形 FLASH_Status FLASH_WaitForLastOperation(u32 Timeout)
功能描述 等待某一个 Flash 操作完成,或者发生 TIMEOUT
输入参数 无
输出参数 无
返回值 返回适当的操作状态。
这个参数可以是: FLASH_BUSY,FLASH_ERROR_PG,FLASH_ERROR_WRP, FLASH_COMPLETE 或者 FLASH_TIMEOUT
先决条件 无
被调用函数 无
例:
/* Waits for the Flash operation to be completed */
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_WaitForLastOperation();
该文档修改记录:
修改时间 | 修改说明 |
---|---|
2023年8月19日 | 第一次发布,介绍了STM32 FLASH存储器(FLASH)所有函数的介绍及使用 |
总结
以上就是3 STM32标准库函数 之 FLASH存储器(FLASH)所有函数的介绍及使用的内容,本文介绍了 FLASH存储器(FLASH)所有函数的介绍及使用所有函数的简单使用。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。