历史上的今天
今天是:2025年08月19日(星期二)
2018年08月19日 | STM32 Flash 擦除 读写 成功
2018-08-19 来源:eefocus
参考:http://download.csdn.net/detail/my_friend_ship/4166970
要点: 将数据写入flash之前,每次都要擦除,否则会写入不成功,出现的错误状态为:FLASH_Status=FLASH_ERROR_PG
写入数据成功后可以在Memory 中查看刚刚写入的数据,具体在Memory 窗口中输入:0x08010000,既可以看到此处的数据为 :Data = 0x15041979;//要写入的地址
擦除的起始地址与终止地址
#define StartAddr ((u32)0x08010000)
#define EndAddr ((u32)0x0807ffff)
//擦除
char IAP_Init()//初始化loaded 的flash
{
FLASHStatus = FLASH_COMPLETE;
//MemoryProgramStatus = PASSED;
/* Unlock the Flash Program Erase controller */
FLASH_Unlock();
/* Define the number of page to be erased */
NbrOfPage = (EndAddr - StartAddr) / FLASH_PAGE_SIZE;
/* Clear All pending flags */
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
/* Erase the FLASH pages */
for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
{
FLASHStatus = FLASH_ErasePage(StartAddr + (FLASH_PAGE_SIZE * EraseCounter));
}
return FLASHStatus;
}
int main(void)
{
u8 t;
u8 key;
u16 oldcount=0; //老的串口接收数据值
u16 applenth=0; //接收到的app代码长度
u8 clearflag=0;
u32 FlashDestination;
FLASH_Unlock();
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
SysTick_Config();
UART_init(9600);//串口初始化为9600 5648
IAP_Init();
Data = 0x15041979;//要写入的地址
u32 Address;
while(1)//循环擦除写入
{
{
IAP_Init();
int j,x;
u32 RamSource;
FLASHStatus = FLASH_COMPLETE;
/* Program the data received into STM32F10x Flash */
FLASHStatus=FLASH_ProgramWord(StartAddr, Data);
if( FLASHStatus == FLASH_COMPLETE )
{
Address = StartAddr;
if (*(u32*)Address != Data )
{
/* End session */
RFID_SendString("IAP XXXXX !"); //写入失败
}
else
RFID_SendString("IAP WRITE !");//写入成功
}
}
史海拾趣
|
工信部副部长奚国华6月底在北京举行“2010中国物联网大会”上表示,工业和信息 化部副部长奚国华在致辞时表示,对于物联网,工信部将加强规划指导和政策引导,加强指导协调,尽快研究解决物联网的内涵,产业界定和产业统计的问题。同时 将超 ...… 查看全部问答> |
|
我用的是PIC单片机,MC45(GSM)模块。 硬件电路MC45的50脚直接插到单片机的50脚插槽上,我用到的MC45脚包括TXD0,RXD0,IGT。 我并不知道MC45的这几个脚如何与单片机的RXD0,TXD0,IGT相连。 我的问题是可不可以软件上实现单片机的RXD0和MC45的TXD ...… 查看全部问答> |
|
Lm3S811 PLL 设置倍频到 50Mhz 之后,为什么实际只有37.5Mhz 呢? Lm3S811 PLL 设置倍频到 50Mhz 之后,为什么实际只有37.5Mhz 呢? SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ);//UART 初始化SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);SysCtlPeripheral ...… 查看全部问答> |
|
之前有了解过pt1000的测量电路,就是很不准确,求各位高人指点! file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/372182098/QQ/WinTemp/GE/8C6B5CD2-B508-47B8-8B53-AEEBA13D57F7.jpg… 查看全部问答> |
|
BeagleBone Black设计:Qt程序编写和桌面图标添加! 24bit的7寸LCD屏和触摸屏调试通过之后,Qt程序的编写就要提上日程! 因为我用的是官方的SDK,所以其自带了Qt4.8的库!我需要做的只是按照官方说明编写自己的Qt程序,然后编译之后生成可执行文件,放入开发板当中去执行即可!! 具体搭建Qt编程环 ...… 查看全部问答> |
|
2015电子大赛题目已经出炉,分享一些资料给大家参考。祝各位取得好成绩!附件中所有电路均可以免费下载,具体可联系管理员:459888529,索要优惠码。 … 查看全部问答> |
|
【MicroPython】Micropython PM检测添加SD卡存储 继续添加功能,PM值检测出来了,同时RTC功能也有了,接下来添加一个SD卡模块,希望能够实时将检测到的数据保存下来,作为历史数据。 在Micropython的官方文档中有关于SD卡的例程和库文件,拿来分析一下,就可以根据例程修改为自己的代码使用。 本 ...… 查看全部问答> |




