STM32读写Flash

本文详细介绍了STM32如何通过`FLASH_Program*`函数进行字节、半字和字的Flash写入,以及使用强制类型转换读取Flash数据。重点讲解了数据的存储和读取技巧,适合嵌入式开发者学习和实践。
摘要由CSDN通过智能技术生成

STM32读写Flash

byte:字节(8位)
halfword:半字(16位)
word:字(32位)

//写Flash时,将数据转换为u32类型的指针,再对指针取值。
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);
//例如:
FLASH_ProgramOptionByteData(0x0800f800, *((volatile uint8_t *)&writedata));
FLASH_ProgramHalfWord(0x0800f800, *((volatile uint16_t *)&writedata));
FLASH_ProgramWord(0x0800f800, *((volatile uint32_t *)&writedata));
//读Flash时,将地址中的数据强转成需要的类型数据。
readdata = *(volatile float *)0x0800f800;
readdata = *(volatile int *)0x0800f800;
readdata = *(volatile u16 *)0x0800f800;
//向flash写入1字节数据(写入1字节)
u8 Data;
*(__IO uint16_t*)Address = Data;
//向flash写入2字节数据(写入半字)
u16 Data;
*(__IO uint16_t*)Address = Data;
//向flash写入4字节数据(写入字)
//其实是分两次进行写入,先写2字节,再写2字节。
u32 Data;
*(__IO uint16_t*)Address = (uint16_t)Data;
Address += 2;
*(__IO uint16_t*)Address = Data >> 16;

数据的强制类型转换

u32 data32;
u16 data1;
u16 data2;
//获取的是data32的低16位
data1 = (u16)data32;
//获取的是data32的高16位
data2 = (u16)(data32 >> 16);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paper_Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值