STM32 flash擦除读写

STM32 flash擦除读写

记录一下flash的擦除和读写操作,第一次玩嵌入式的板子

void flash_thread_entry(void *parameter)
{
        uint16_t my_add = 0x0011;
        uint32_t SectorError = 0;
        FLASH_EraseInitTypeDef My_Flash;
        HAL_FLASH_Unlock();

        My_Flash.TypeErase = FLASH_TYPEERASE_SECTORS;
        My_Flash.VoltageRange = FLASH_VOLTAGE_RANGE_3;
        My_Flash.Sector = 5;
        My_Flash.NbSectors = 6;

        if (HAL_FLASHEx_Erase(&My_Flash, &SectorError) != HAL_OK)
        {
            rt_kprintf("Erase error\r\n");
        }

        uint16_t Write_Flash_Data = my_add;
        uint32_t addr = ((uint32_t)0x08020000);
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr, Write_Flash_Data);

        HAL_FLASH_Lock();

        rt_kprintf("at address:0x%x, read value:0x%x\r\n", addr, *(__IO uint8_t*)addr);
        rt_thread_mdelay(500);

    for( ; ; ) {
        rt_thread_mdelay(500);
    }
}

环境是用的HAL库,STM32F2的板子

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一款由STMicroelectronics公司推出的微控制器系列,其中包括了Flash存储器。下面介绍STM32 Flash存储器的读写操作。 STM32 Flash存储器的容量一般为几十KB到几百KB,可以分为多个扇区。每个扇区的大小一般为1KB或2KB。Flash存储器的读写操作都需要进行编程和擦除Flash编程操作: 1. 开启Flash编程 在进行Flash编程之前,需要先开启Flash编程。这可以通过设置FLASH_CR寄存器的PG位来实现。 2. 写入数据 写入数据需要先将要写入的数据放在FLASH地址中,然后向FLASH地址写入数据。如果要写入的数据不止一个字,则需要多次写入。 3. 关闭Flash编程 在Flash编程结束后,需要关闭Flash编程。这可以通过设置FLASH_CR寄存器的PG位来实现。 Flash擦除操作: 1. 开启Flash擦除 在进行Flash擦除之前,需要先开启Flash擦除。这可以通过设置FLASH_CR寄存器的PER位来实现。 2. 选择要擦除的扇区 要擦除的扇区可以通过设置FLASH_AR寄存器来实现。 3. 启动擦除操作 擦除操作可以通过设置FLASH_CR寄存器的STRT位来实现。 4. 等待擦除完成 擦除操作需要一定的时间,需要等待擦除完成。可以通过轮询FLASH_SR寄存器的BSY位来实现。 5. 关闭Flash擦除Flash擦除结束后,需要关闭Flash擦除。这可以通过设置FLASH_CR寄存器的PER位来实现。 总结: STM32 Flash存储器的读写操作需要进行编程和擦除。编程操作需要开启编程,写入数据,关闭编程。擦除操作需要开启擦除,选择要擦除的扇区,启动擦除操作,等待擦除完成,关闭擦除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值