stm32F103基于HAL库内部flash使用方法以及浮点数问题

首先我们的存储地方位于 主存储块 但是这些我们不是全能用的 

这部分也会存放我们的代码部分 所以 如果你烧录进去代码 随后在页0,1,2会直接覆盖代码部分导致死机。所以通常都是用最后末尾的。

HAL库使用流程 

主用四个函数

HAL_FLASH_Unlock();
HAL_FLASHEx_Erase(&My_Flash,&FlashError);

HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,a,test)

HAL_FLASH_Lock();

在进行任何操作前都是要解锁 完成后加锁.

擦除函数的参数 第一个是结构体 我们需要自己创建并且赋值

void FLASH_init(void)
{
        My_Flash.PageAddress = a;
        My_Flash.TypeErase=FLASH_TYPEERASE_PAGES;
        My_Flash.NbPages = 1;
}

pageAddress就是对应途中的页地址开头

My_Flash.TypeErase则是擦除方式 我们这里是擦除页

NbPages是擦除的页数。

HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,a,test)

第一个参数后很多个  word halfword  等等 word对应的是当前设备cpu一次性处理的字节

我们stm32f103是32位 word 如果我们要存储 uint16_t 就是halfword

a就是地址   test则是我们的存储数据 可以是int  double  float

浮点数存储

FLASH_TYPEPROGRAM_HALFWORD 这些参数要求整数类型

所以存储float可不是意味着 就是使用HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,a,test)把test换成什么float类型什么的这么简单

需要把 float test  传入的时候转成 *(uint32_t*)&test    取出来 则是正常读取float*就可以了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值