STM32F030读保护会影响程序自己读取唯一序列号么?

2019-12-10 18:11发布

本帖最后由 Elex 于 2016-12-19 10:26 编辑

按照STM32F030的参考手册,OB_RDP_Level_1 读保护貌似是不应该影响其自身程序读取FLASH和内部序列号存储空间的,但这次我测试在调试状态下执行使能加密程序则一切正常,此后再多次断电重新运行读取内部FLASH和唯一序列号进行校验的程序也是可以正常运行的,用j-flash读取芯片或重新进入调试则会芯片已经读保护了。但如果在程序独立运行时运行使能加密的程序,则此后读取内部FLASH和唯一序列号进行校验的程序就出现错误了(估计是读取内容的操作受到影响了),确认芯片也已经读保护了。

问题: STM32F030读保护会影响程序自己通过指针读取唯一序列号和内部flash么?
这是使能加密的程序:
    void lockChip(void)
    {
                FLASH_Unlock();
                // 读写flash标记(l略)
               .....(其它Flash操作)
               
                delayMs(50);
                FLASH_ClearFlag(FLASH_FLAG_WRPERR | FLASH_FLAG_EOP | FLASH_FLAG_PGERR);
                FLASH_OB_Unlock();
                FLASH_OB_RDPConfig(OB_RDP_Level_1);               
                //FLASH_OB_Launch();  //此句使能后执行则调试状态也会被马上禁止访问芯片
                delayMs(50);
                FLASH_OB_Lock();
                FLASH_Lock();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
EMC菜鸟
1楼-- · 2019-12-12 06:38
Elex 发表于 2016-12-22 12:56
大神,你好!
原来不清楚这么detail的东西躲在overview了,怪不得我在参考手册上找不到~~
我验证 ...

直接用 TIMx->CCR1=0xFFFF  输出高电平, TIMx->CCR1=0 输出低电平,还设置为普通IO干嘛?

执行 TIMx->CCR1=0 跟 GPIOx->BRR=GPIO_Pin_x 对使用来说有啥区别?
Elex
2楼-- · 2019-12-12 12:36
EMC菜鸟 发表于 2016-12-23 00:07
直接用 TIMx->CCR1=0xFFFF  输出高电平, TIMx->CCR1=0 输出低电平,还设置为普通IO干嘛?

执行 TIMx-> ...

之前就是直接设置0%和100%出现这样随机的问题所以才改用直接IO方式的,但是问题一样存在。没有设置过PWM的IO就不会出现这样的问题。外部方波信号中断触发转换几个IO的输出状态,只有设置过PWM的IO口会随机有多一个PWM波形的输出,假设如果是外部干扰引起的则其它无PWM功能的IO也同样有异常输出才是
如下图:1~3是设置过PWM的IO输出,4是无PWM功能的IO输出。

QQ图片20161223122014.png (51.52 KB, 下载次数: 0)

下载附件

2016-12-23 12:07 上传

xml2028
3楼-- · 2019-12-12 13:33
测试一下加密保护

一周热门 更多>