1、STM32对内部Flash的维护措施
经过调试器(JTAG或SWD);
从RAM中发动并履行的程序;
2、当Flash读维护收效时,CPU履行程序能够读受维护的Flash区,但存在两个例外情况:
3、Flash维护相关函数
以下摘自论坛:
http://www.openedv.com/posts/list/9353.htm
(1)设置读维护
int
{
….
if(FLASH_GetReadOutProtectionStat
{
//FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE);
}
……
while(1)
{
…..
}
}
读维护后无法运用j-link将程序读出,当然也无法在线仿真了
这个写到程序傍边并履行往后,运用j-link就不能‘读出’程序了,便是‘读维护’了!我现已试过了,没有运用此程序能够读出下载到芯片中的程序,可是假如运用了此程序就无法读出程序了。
可是也无法再次烧写新的程序到芯片中了(要测验请稳重!!!!!!)
能够再主程序傍边设置一按键专门铲除“读维护”,一旦按下按键则铲除“读维护”时芯片能够从头被烧写。(我没有怎么做现在懊悔死了!)
办法二:弥补的办法,专门写一个铲除“读维护”程序,运用RAM中运转程序的办法,运转此程序解锁“读维护”。明日再去测验下,此办法。
在主程序中,经过一个按键,写入撤销“读维护”
if(FLASH_GetReadOutProtectionStat
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
运用j-link,能够正常读写程序和在线调试。
假如没有在主程序中有写这条指令,此芯片就无法再次烧写程序(能够擦出可是擦出后仍是无法烧写程序)。
只要经过将此撤销“读维护”程序,烧写到RAM中运转后,才干撤销“读维护”(要测验的请稳重!!!别救不会来就糟糕了)