启动读保护后,用户就不能再读写程序了.

所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序

头文件位于:#include "stm32f10x_flash.h"

启动保护,用在main()函数初始化时调用:

void Set_Protect(void) //启动保护

{

if(FLASH_GetReadOutProtectionStatus() != SET)

{

FLASH_Unlock(); //解锁

FLASH_ReadOutProtection(ENABLE);

FLASH_Lock();//上锁

}

}

注意:

当代码第一次调用Set_Protect()函数启动读保护时。

期间不能再次调用Off_Protect()函数关闭读保护,需要重新断电才能关闭读保护(因为Flash状态启动读保护后,不能立即设置Status=1)

关闭读保护,在串口接收某个有效数据或按下某个按键时,调用:

void Off_Protect(void) //关闭保护

{

if(FLASH_GetReadOutProtectionStatus() != RESET)

{

FLASH_Unlock(); //不解锁FALSH也可设置读保护

FLASH_ReadOutProtection(DISABLE);

FLASH_Lock();//上锁

}

}

运行测试

1.第一步,下载程序

2.下载成功后,再次烧写程序,校验是否启动读保护(因为启动读保护后,不能进行读写程序了)

3.通过ST-LINK Utility工具尝试连接芯片,发现确实不能读数据了

然后只要代码调用Off_Protect()函数,便可以取消保护了

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐