使用J-link+J-Flash给STM32芯片烧写序列号

最近项目中,需要为STM32芯片烧写一个序列号,也就是产品量产时都会遇到的问题
    硬件准备:J-Link 一个,STM32F103C8T6 的开发板子一块
    软件准备: Setup_JLink_V600d 版本的J-Flash 
 前期的创建new project, 对Options的Project Setting 的Genneral/ Target Interface/ MCU/Flash的选项卡,不作太多详细的说明,大家做项目应该会设置。
在最后一个Projection 的选项卡中 Program serial number 

 
Address 指定烧写的地址   (这里我们烧写的地址取 0x0800 F000)
Len  指定烧写长度,最大4个字节
Next SN  指定第一次要烧写的十进制数,之后自动根据Increment 数值递增 (十进制: 123456789,对应的十六进制为:075BCD15 )
Increment  序列号递增的间隔 
配置好之后,点击“OK”,设置完毕(只设置一次即可),然后连接目标芯片“Target->Connect”,连接成功,点击“Auto”。
然后再读出整个Flash 内存   Target->Read back-> Entire chip 

可见序列号已经按照要求写入到指定的地址了。
下一步就是从程序中读Flash,然后存储在buff中。
 可以参考如下程序: 
#define  FLASH_ADDR (0x800F000)

uint8_t Read_Flash_ID_Buff[4];void ReadFlashGdata(void)

{    

uint8 p;    uint16 count=0;            

memset(Read_Flash_ID_Buff,0,sizeof(Read_Flash_ID_Buff));        

RCC_HSICmd(ENABLE);            

while(count < 4)  

 {        

p=*(u8 *)(FLASH_ADDR + count*1);   //读取方法                

Read_Flash_ID_Buff[count]=p;        count++;  

 }        
 

猜你喜欢

转载自blog.csdn.net/qinrenzhi/article/details/84136080