2025年keil破解步骤 2032(keil2020破解)

keil激活成功教程步骤 2032(keil2020激活成功教程)代码分析 设置写保护及解除 在本工程中 定义了一个 WriteProtect Toggle 函数用于设置写保护及解除 见 本函数主要演示写保护和解除功能 若芯片本身处于写保护状态 则解除保护 若芯片本身处于无写保护状态 则设置加入写保护 WriteProtect Toggle 在操作前会先使用库函数 FLASH GetWriteProt 检测芯片当前的写保护状态

大家好,我是讯享网,很高兴认识大家。



代码分析

设置写保护及解除

在本工程中,定义了一个WriteProtect_Toggle 函数用于设置写保护及解除,见 。

本函数主要演示写保护和解除功能,若芯片本身处于写保护状态,则解除保护,若芯片本身处于无写保护状态,则设置加入写保护。

WriteProtect_Toggle在操作前会先使用库函数FLASH_GetWriteProtectionOptionByte检测芯片当前的写保护状态,该函数的返回值为FLASH_WRPR寄存器的内容, 它反映了选项字节WRP0/1/2/3的配置。所以在代码中,它判断该函数的返回值不等于0xFFFFFFFF时,可知道芯片至少存在一页被写保护,则程序开始执行解除保护分支。

在解除保护分支中,先调用FLASH_Unlock解除FLASH_CR的访问限制,再使用参数0调用前面介绍的FLASH_EnableWriteProtection函数对所有页解除写保护, 解除配置写入完成后,调用库函数NVIC_SystemReset使芯片产生系统复位,从而使配置生效。


讯享网

若WriteProtect_Toggle在执行判断时发现芯片本身处于无写保护的状态,则以上述同样的过程向选项字节写入配置, 调用FLASH_EnableWriteProtection函数时使用FLASH_WRProt_AllPages宏,对所有FLASH页加入写保护,最后同样调用NVIC_SystemReset产生系统复位使配置生效。

设置读保护及解除

针对读保护及其解除,本工程定义了ReadProtect_Toggle 函数,见 。

类似地,本函数主要演示读保护和解除功能,若芯片本身处于读保护状态,则解除保护,若芯片本身处于无读保护状态,则设置加入读保护。

ReadProtect_Toggle在操作前会先使用库函数FLASH_GetReadOutProtectionStatus检测芯片当前的写保护状态,该函数内部通过判断选项字节的RDP值, 返回SET(读保护状态)和RESET(无读保护状态)。

判断后,若进入到解除保护分支,会先调用FLASH_Unlock解除FLASH_CR的访问限制,然后使用前面介绍的FLASH_ReadOutProtection函数以DISABLE作为参数解除读保护。

必须注意的是,该函数执行后,所有存储在内部FLASH时的代码都会被删除,以防止原程序被读出,而由于自身代码已被清除, 所以代码中在FLASH_ReadOutProtection(DISABLE)语句后的串口输出是不会被执行的,因为此时这个程序已经不存在了, 但如果使用SRAM版本的程序测试,它是会有输出的,因为这时本程序自身是存储在内部SRAM空间的。

由于解除保护后会触发芯片FLASH的整片擦除操作,所以要稍等一段时间,等待20秒后,解除操作完成,可以重新给芯片的FLASH下载新的程序。

若ReadProtect_Toggle在执行判断时发现芯片本身处于无读保护的状态,它会使用FLASH_ReadOutProtection(ENABLE)语句把芯片设置为读保护状态。 仔细对比读写保护的配置函数,可以发现读保护设置后并没有调用NVIC_SystemReset函数使芯片产生系统复位,这是因为读保护的设置与解除, 是要使用上电复位才能生效的(即重新给芯片上电),系统复位不会产生效应。

main函数

最后来看看本实验的main函数,见 。

在main函数中,初始化了串口、LED、按键等外设后,根据芯片当前的保护状态输出调试信息,接着循环轮询按键, 若按了KEY1按键,则执行前面的WriteProtect_Toggle反转写保护状态,若按了KEY2键,则执行前面的ReadProtect_Toggle反转读保护状态。

小讯
上一篇 2025-05-13 11:39
下一篇 2025-05-08 17:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/202133.html