STM32 Flash擦除错误故障现象解决办法故障现象我们研发的设备,在擦除0x0800FC00这一配置页时,发现0x0800E800的数据也会被擦除掉。在
2021-12-02 10:36
STM32 Flash擦除错误故障现象解决办法故障现象我们研发的设备,在擦除0x0800FC00这一配置页时,发现0x0800E800的数据也会被擦除掉。在
2022-01-26 07:12
恢复模式,但仍然收到芯片擦除超时错误。 重置命令/回复正常, minidriver 下载成功, 模块对芯片擦除序列的回复:01 CE FF 04 00 00 00 FF 是一个字节:0x58 我在论坛上查找了类似的
2025-06-26 06:41
程序中,出现错误,怎么才能消除错误继续执行?
2015-08-10 18:13
项目中用到stm32内部flash存储一些系统运行数据,每次上电重新加载保存的数据。早先用法如下图所示,擦除之前每次要关闭总中断,解锁flash,擦除对应扇区,然后写入数据
2021-12-02 11:51
times = OSQFlush((OS_Q*)&Auto_92Q,&err); //清空消息队列Auto_92Q是已经建立好的消息队列。发现返回值是 删除错误, 为什么哈?
2020-04-24 04:36
该发明揭示了一种新的存储器擦除技术,其独特之处在于首先接收到擦除指令,然后再评估擦除错误位置和地址是否满足擦除要求。如果确认为条件符合则启动
2024-02-23 10:01
STM32擦除内部FLASH时间过长导致IWDG复位(嵌入式开发一般采用什么方式?)-客户反馈在使用STM32F412的时候,擦除sector 8~11发现时间过长,从
2021-07-30 11:06
怎么擦除stm32单片机里面的程序呢? 要擦除STM32单片机内部的程序,需要以下步骤: 1. 准备工具和设备 要擦除
2023-09-14 14:22
请问大家,为什么FMC_Erase返回总是-1,主函数中PE0,PE1,PE2是我的三个按键,我主要是想实验对flash的擦写,将数据存到flash中,实现掉电数据不丢失,但现在一个插除页都是失败的,还请大家解惑。 #include #include \"Nano100Series.h\" #define DATA_FLASH_TEST_BASE 0x12400; int32_t u32Addr = DATA_FLASH_TEST_BASE; uint32_t u32Pattern = 0xA5A5A5A5; uint32_t u32data; void dataflash_test() { SYS_UnlockReg(); FMC_Open(); FMC_Erase(u32Addr); if(FMC_Erase(u32Addr)==-1) { printf(\"erase--error\\r\\n\"); } FMC_Write(u32Addr, u32Pattern); u32data = FMC_Read(u32Addr); if (u32data != u32Pattern) { printf(\"data different\"); } printf(\"one--u32pattern--%x\\r\\n\",u32Pattern); printf(\"one--dihzi--%x\\r\\n\",&u32Addr); printf(\"one--u32data--%x\\r\\n\",u32data); printf(\"one--dizhi--%x\\r\\n\",&u32data); FMC_Write(u32Addr+4, u32Pattern); u32data = FMC_Read(u32Addr+4); if (u32data != u32Pattern) { printf(\"data error-----u32addr+4\\r\\n\"); } printf(\"two----%x----u32pattern\\r\\n\",u32Pattern); printf(\"two----%x----dizhi\\r\\n\",&u32Addr); printf(\"two----%x----u32data\\r\\n\",u32data); printf(\"two----%x----dizhi\\r\\n\",&u32data); SYS_LockReg(); } void dataflash_test_read() { u32data = FMC_Read(u32Addr); printf(\"one--u32data--%x\\r\\n\",&u32Addr); printf(\"one--u32data--%x\\r\\n\",&u32data); } void SYS_Init(void) { SYS_UnlockReg(); CLK_EnableXtalRC(CLK_PWRCTL_HIRC_EN_Msk); CLK_WaitClockReady( CLK_CLKSTATUS_HIRC_STB_Msk); CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC,CLK_HCLK_CLK_DIVIDER(1)); CLK_EnableModuleClock(UART0_MODULE); CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_UART_CLK_DIVIDER(1)); SystemCoreClockUpdate(); SYS->PA_H_MFP &= ~(SYS_PA_H_MFP_PA14_MFP_Msk|SYS_PA_H_MFP_PA15_MFP_Msk); SYS->PA_H_MFP |=(SYS_PA_H_MFP_PA14_MFP_UART0_RX|SYS_PA_H_MFP_PA15_MFP_UART0_TX); SYS_LockReg(); } int main(void) { SYS_Init(); UART_Open(UART0, 115200); while(1) { if(PE1==0) { CLK_SysTickDelay(100); if(PE1==0) { ; } while(PE1==0); dataflash_test(); } if(PE0==0) { CLK_SysTickDelay(100); if(PE0==0) { ; } while(PE0==0); dataflash_test_read(); } if(PE2==0) { CLK_SysTickDelay(100); if(PE2==0) { ; } while(PE2==0); NVIC_SystemReset(); } } }
2023-06-27 06:56