OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2727|回复: 2

keil或J-link下载hex文件时下载软件对单片机Flash的操作过程

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-3-8
在线时间
4 小时
发表于 2016-3-21 21:36:50 | 显示全部楼层 |阅读模式
2金钱
不是操作流程,而是下载软件对单片机Flash的操作过程。是否会对flash的值全部置1?
是这样的,我在学习对单片机的代码加密,里面有一段代码如下:

#define EcchryptionIDADDR  0x08003800 ///芯片加密ID存储位置
#define PrimaryCode        0xFFFFFFFF ///芯片ID存储点原始密码

CpuID[0]=STMFLASH_ReadWord(0x1ffff7e8);
CpuID[1]=STMFLASH_ReadWord(0x1ffff7ec);
CpuID[2]=STMFLASH_ReadWord(0x1ffff7f0);
/**********芯片ID加密算法*****************/
Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>3)+(CpuID[2]>>5);

ExistID=STMFLASH_ReadWord(EcchryptionIDADDR);///读取已存加密ID   

if(ExistID==Lock_Code) //若处理后的芯片ID==已存ID
{
  printf("芯片ID正确\r\n");
}
  else if(ExistID==0xFFFFFFFF) //若处理后的芯片ID==初始ID             ZHONGDIAN:重点!为什么初始ID等于0xFFFFFFFF?????????
{
  printf("芯片初次使用\r\n");
  FLASH_Unlock();///解锁FLASH
//  FLASH_EraseOptionBytes();
  FLASH_ErasePage(EcchryptionIDADDR);//擦除2K
  FLASH_ProgramWord(EcchryptionIDADDR, Lock_Code);//将加密后的芯片唯一ID存入FLASH     
}
else  //防盗处理
{
  printf("芯片锁死\r\n");
  while(1);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-3-8
在线时间
4 小时
 楼主| 发表于 2016-3-21 21:37:39 | 显示全部楼层
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-3-8
在线时间
4 小时
 楼主| 发表于 2016-3-22 21:26:53 | 显示全部楼层
自顶
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 17:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表