STM32F1 HAL库读写内部FLASH

void FLASH_Write(uint32_t Writeaddr,uint16_t *pBuffer,uint16_t NumToWrite)
{
    uint8_t i = 0;
    uint32_t PageError = 0;
    if(NumToWrite > 255) return ;
    static FLASH_EraseInitTypeDef EraseInitStruct;
    
    EraseInitStruct.TypeErase =  FLASH_TYPEERASE_PAGES;
    EraseInitStruct.NbPages = 1;
    EraseInitStruct.PageAddress = WRITE_START_ADDR;

    HAL_FLASH_Unlock();
    if(HAL_FLASHEx_Erase(&EraseInitStruct,&PageError) != HAL_OK)
    {
        return ;
    }
    while(i < NumToWrite)
    {
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,Writeaddr+2*i,pBuffer[i]);
        i++;
    }
    HAL_FLASH_Lock();
}

void FLASH_Read(uint32_t Readaddr,uint16_t *pBuffer,uint16_t NumToWrite)
{
    uint8_t i = 0;
    
    while(i < NumToWrite)
    {
        pBuffer[i] = *(uint32_t *)(Readaddr+2*i);
        i++;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值