8006|11

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

提个似乎很少人去研究的问题~STM32选项字的那两个用户字节~ [复制链接]

也就是STM32选项字中,可以被用户使用的两个字节:
位于:0x1FFFF804,0x1FFFF806.这个理论上用STM32的库函数FLASH_ProgramOptionByteData是可以写入的.但我试了,写入后,无论是读FLASH->OBR,还是直接从地址读,都读不出我之前写入的字~
ProgramOptionByteData函数我看了内容,已经包含了FLASH的解锁了,为什么还是写不入呢?奇怪啊奇怪~

这两个选项字,我是打算用来做软加密用的,密文就放这两个选项字里了.比放FLASH里要安全,因为如果选项字中设置了读保护(也就是加密了),那么要在保存当前FLASH内容下,改变这两个用户选项字,基本是不可能的了~因为选项字是一同刷除的,而读保护被刷,FLASH也就被刷了~
此帖出自stm32/stm8论坛

最新回复

                                 顶一下  详情 回复 发表于 2010-7-28 08:13
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 支持白菜,我有你的开发板
此帖出自stm32/stm8论坛
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 我倒~~~
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 这个ID有些眼晕…
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 咋都成水贴了~难道还真是没人用过这两个选项字?不用白不用哇~
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
从库函数的源码中,没有看到有解锁的操作呀?你看的是哪个版本,是不是看错了?

  1. FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data)
  2. {
  3.   FLASH_Status status = FLASH_COMPLETE;
  4.   /* Check the parameters */
  5.   assert_param(IS_OB_DATA_ADDRESS(Address));
  6.   status = FLASH_WaitForLastOperation(ProgramTimeout);
  7.   if(status == FLASH_COMPLETE)
  8.   {
  9.     /* Authorize the small information block programming */
  10.     FLASH->OPTKEYR = FLASH_KEY1;
  11.     FLASH->OPTKEYR = FLASH_KEY2;
  12.     /* Enables the Option Bytes Programming operation */
  13.     FLASH->CR |= CR_OPTPG_Set;
  14.     *(__IO uint16_t*)Address = Data;
  15.    
  16.     /* Wait for last operation to be completed */
  17.     status = FLASH_WaitForLastOperation(ProgramTimeout);
  18.     if(status != FLASH_TIMEOUT)
  19.     {
  20.       /* if the program operation is completed, disable the OPTPG Bit */
  21.       FLASH->CR &= CR_OPTPG_Reset;
  22.     }
  23.   }
  24.   /* Return the Option Byte Data Program Status */
  25.   return status;
  26. }
复制代码
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 这个问题有点意思,什么时候有空我试试看。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
FLASH->OPTKEYR = FLASH_KEY1;
FLASH->OPTKEYR = FLASH_KEY2;

这个还不是解锁?难道还有别的锁?
我倒是知道还有设置写保护的功能,但那是对FLASH空间的页保护,似乎没说选项字也要保护,而且默认是没写保护的~
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(中级)

9
 
难道还要这个?
FLASH->KEYR = FLASH_KEY1;
FLASH->KEYR = FLASH_KEY2;

晕了,我被OPTKEYR 给忽悠了哈哈~~原来是不一样的寄存器~~
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

10
 
看楼主的帖子,以为你知道呢:

void FLASH_Lock  ( void  );
void FLASH_Unlock  ( void  );
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 高速一瞄,还真以为是同一回事~~~,细细看,原来是被忽悠了
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 顶一下
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表