如何写保护?
STM32F105RB,使用的是HAL库,参照论坛里的方法,添加读保护、写保护代码。在j-link烧写时,提示 有读保护 或 写保护。但 依然可以烧写。在STM32F4系列的说明手册里,有提到 写保护。OB_RDP_LEVEL_2。该级别,完全禁止。但这个常数在F1系列的标准库里没有定义(F1库里只有LEVEL_0和LEVEL_1),我参照这个值定义到代码里,似乎不起作用。
请问各位,是如何禁止 F1系列再次烧写的? 楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
/OB_RDP_LEVEL_2,在标准库里没有。我参照STM32F4的库,搬过来的。#define OB_RDP_LEVEL_2 ((uint8_t)0xCC)(~病急乱投医)。
//开启写保护,即:禁止写入;
OptionsBytesStruct.OptionType = OPTIONBYTE_WRP;
OptionsBytesStruct.WRPState = OB_WRPSTATE_ENABLE;
OptionsBytesStruct.WRPPage = FLASH_PAGE_TO_BE_PROTECTED;
OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_2; // OB_RDP_LEVEL_1
if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
{
return 1;
} 标准库是
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);//使能相应接口的时钟,以及RCC_APB2Periph_AFIO
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//完全禁用SWD及JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
更多操作 用JLINK自带的烧写软件加密;
HAL库是
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); //
__HAL_RCC_GPIOF_CLK_ENABLE(); //
/* JTAG-DP Disabled and SW-DP Disabled */
__HAL_AFIO_REMAP_SWJ_DISABLE(); //完全禁用SWD及JTAG
__HAL_AFIO_REMAP_SWJ_NOJTAG(); //禁用JTAG 产生的副作用
在禁用掉相应的接口方式后,即不能再使用这种方式下载程序了。因此会出现很多人遇到的:“”RAM check failed at :“”或者“NO M-Cortex”.
遇到这个状况,需要再次下载程序,有如下三种办法:
如果只禁用的JTAG,可以用SWD模式下载程序进去。
更多操作
你这不 是 stm32f1xx_hal_flash_ex.h 这个里面定义的吧?
文件里,没搜到你给的这几个呢?
这个是需要自己实现。
你用图形化的cubeMX工具看看那几个引脚可以设置成其他功能不。 刚接触STM32,还没入门。折腾不了这么高端的东西。
防止STM32再次烧写,你有什么妙招么?
普通烧写烧写,破译工具烧写、芯片引脚搭接烧写等高难度的暂不考虑
就是用来别人改不了程序?
如果只是怕别人误操作下程序啥的,flash loader 下程序的时候里面有个写保护,点了就可以了。
对,就是防止他人修改程序……但我的代码,目前只能达到 重新烧写时 提示有写保护,但依然可以烧写……
如何禁止STM32再烧写……我期望达到的是不能直接再次烧写
F1系列是个例外,它不支持2级保护。若二级保护后不再支持后续的调试接口的烧写或编程了。
F1系列虽不支持2级保护,但你读保护后想再编程,里面代码是会被清除的。
对,我就是想达到:不再烧写或编程。
页:
[1]
2