STM32M4 内部flash编程

#include "DataType.h"
#include "stm32f4xx_flash.h"




BOOL MCU_FlashErase(INT16U iSector)
{
BOOL bSta;
FLASH_Status Status;


bSta   = FALSE;
Status = FLASH_EraseSector(iSector<<3, VoltageRange_3);
while(Status == FLASH_BUSY)
{
Status = FLASH_WaitForLastOperation();
}


if(Status == FLASH_COMPLETE)
{
bSta = TRUE;
}


return bSta;
}
BOOL MCU_FlashLock(void)
{
FLASH_Lock();


return TRUE;
}
BOOL MCU_FlashUnLock(void)
{
FLASH_Unlock();
    FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | 
                    FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR); 
return TRUE;
}
BOOL MCU_FlashProgram(INT32U Addr,INT8U *pBuff,INT16U iCnt)
{
FLASH_Status status;
INT16U iLoop;
BOOL   bSta;


iCnt >>= 2;
bSta   = TRUE;
for(iLoop=0; iLoop<iCnt; iLoop++)
{

  status = FLASH_ProgramWord(Addr, *(INT32U*)(pBuff));
pBuff += 4;
Addr  += 4;
if(status!=FLASH_COMPLETE)
{
bSta = FALSE;
break;
}
}
return bSta;
}
void test_flash(void)
{
    INT8U ctempBuff[]= "1234567890";

MCU_FlashUnLock();
MCU_FlashErase(1);
MCU_FlashProgram(0x08004010,ctempBuff,10);
MCU_FlashLock();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32F429是意法半导体(STMicroelectronics)推出的一款高性能32位微控制器,它具有内部闪存存储器,用于程序代码的存储和执行。 STM32F429的内部闪存存储器可以被分为两个区域:系统存储器(SRAM)和闪存存储器(Flash)。 在进行内部闪存操作之前,需要确保Flash被正确地初始化。初始化过程包括对Flash存储器的解锁和擦除。 在对Flash进行操作之前,首先需要对其进行解锁。在解锁之前,无法对Flash进行读写操作。解锁的方法是使用FLASH解锁函数,例如:FLASH_Unlock()。 然后可以对Flash进行擦除操作。Flash擦除是指将存储空间恢复到初始状态的操作。擦除操作可以是整个Flash的擦除,也可以是指定地址范围的擦除。擦除的方法是使用FLASH擦除函数,例如:FLASH_Erase()。 完成解锁和擦除后,就可以对Flash进行写入操作了。写入操作是将数据写入Flash存储器中的特定地址处。写入的方法是使用FLASH编程函数,例如:FLASH_Program()。 在进行Flash操作时,需要注意的是,每个Flash单元都有一定的擦除和编程次数的限制。因此,在进行频繁的Flash操作时,应该尽量避免过度擦除和编程,以延长Flash的使用寿命。 总而言之,对STM32F429的内部Flash进行操作包括解锁、擦除和写入三个主要步骤。这些操作可通过使用相应的Flash操作函数来完成,以实现对程序代码的存储和执行。在进行Flash操作时,需要注意保护Flash的寿命以及合理使用Flash的存储空间。 ### 回答2: STM32F429是意法半导体(STMicroelectronics)推出的一款32位微控制器,具有内置的Flash存储器。下面我将简要介绍STM32F429内部Flash的操作。 STM32F429的内部Flash存储器具有较大的存储容量,通常分为多个扇区(Sector),每个扇区的大小为16KB或128KB。用户可以按照需求选择适当的扇区进行存储。 在进行内部Flash操作之前,需要确保这些地址空间未被写保护。一旦Flash被写保护,将无法进行任何写操作。用户可以使用相关的寄存器来进行写保护设置。 在以编程方式操作STM32F429内部Flash时,需要按照特定的步骤进行。首先,需要擦除待写入数据的扇区。可以选择一次性擦除整个Flash存储器,也可以选择逐扇区擦除。擦除操作将会将扇区的数据全部擦除为0xFF。 接下来,可以将数据写入擦除后的Flash扇区。写操作是对指定地址的数据进行写入,可以是单个字节,也可以是多个字节。写操作通常需要在软件中进行错误检查,以确保数据写入的正确性。 在写入数据后,还可以对已写入的数据进行读取操作,以验证数据的正确性。读操作可以一次读取单个字节,也可以一次读取多个字节。读取操作通常需要在软件中进行错误检查。 值得注意的是,STM32F429的Flash存储器具有有限的擦写寿命。如果频繁地进行擦写操作,可能会导致Flash存储器的寿命缩短。因此,在进行内部Flash操作时要合理选择操作频率和扇区擦写次数。 总之,STM32F429的内部Flash存储器具有较大的存储容量,并通过特定的步骤实现擦除、写入和读取操作。合理地使用内部Flash存储器可以为嵌入式系统提供有效的存储支持。 ### 回答3: STM32F429是意法半导体(STMicroelectronics)推出的一款32位ARM Cortex-M4处理器的微控制器。它具有内置的Flash存储器,可以用于储存程序和数据。 STM32F429内部Flash存储器分为两部分:主存储区和系统存储区。主存储区的大小通常为2MB,而系统存储区的大小通常为16KB。用户可以将程序和数据存储在这两个区域中。 为了进行内部Flash操作,我们需要使用适当的编程工具和技术。这些工具包括STM32Cube程序包、STM32CubeProgrammer、ST-Link调试接口等。 用户可以使用STM32CubeMX图形化配置工具生成初始化代码,用于配置STM32F429内部Flash存储器的读、写和擦除操作。该工具可以帮助用户选择适当的时钟频率、存储器映射方案和读/写保护功能。 在编程时,我们可以使用标准库提供的函数来进行内部Flash操作。例如,将程序从外部存储器读取到内部Flash存储器的主存储区中,可以使用HAL库提供的函数"HAL_FLASH_Program()"。该函数将数据按字编程内部Flash存储器的指定地址中。 除了编程操作外,还可以使用擦除操作来清除内部Flash存储器中的数据。HAL库提供了"HAL_FLASH_Erase()"函数来擦除指定地址的内部Flash存储器。 需要注意的是,内部Flash存储器的读/写操作是有限制的。在进行写操作之前,需要先将“写保护位”禁用。此外,还需要确保内部Flash存储器的电压供应在适当的范围内。 总之,STM32F429微控制器具有内置的Flash存储器,可以用于储存程序和数据。用户可以使用适当的工具和技术来进行内部Flash操作,包括编程和擦除操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

缥缈孤鸿_jason

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

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

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

打赏作者

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

抵扣说明:

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

余额充值