stm32isp.rar

上传者: ljxh401 | 上传时间: 2021-11-22 16:23:51 | 文件大小: 558KB | 文件类型: -
C代码,接口简单明了,在本机测试通过可以正常读写stm32
串口设备默认是 ttyUSB0

int DemoPro(unsigned char *pdata,int len)
{
int ret=0;
stm32isp.fd=stm32isp.open();
printf("fd:%d\n",stm32isp.fd);
while(1){
if(TestLink()!=0) {ret= 1;break;} //握手失败
if(GetVersionAndCmd()!=0) {ret= 2;break;} //获取版本失败
printf("ver:%d.%d\n",stm32isp.ver>>4,stm32isp.ver&0x0f);
if(stm32isp.ver!=0x22) {ret= 3;break;} //下载器的版本不对,暂时只针对2.2版本的程序
if(GetProtectState()!=0) {ret= 4;break;} //其实读取不了是不是保护的状态的
if(GetStm32TypeId()!=0) {ret= 5;break;} //获得stm32的型号
printf("stm32 type:%X\r\n",stm32isp.typeid);
if(ReadMemory(0x1FFFF7E8,12,(unsigned char*)stm32isp.onlyId)!=0) //读取唯一id,读取失败则解锁再读取
{
printf("read id eror\n");
if(UnRdProtect()!=0) {ret= 6;break;}
continue;
}
else printf("stm32id:%08X%08X%08X\n",stm32isp.onlyId[0],stm32isp.onlyId[1],stm32isp.onlyId[2]);

if(EraseFlash()!=0)
{
//擦除失败 就擦除读保护
printf("Erase Chip error\n");
if(UnRdProtect()!=0) {ret= 7;break;}
continue;
}

//if(WriteMemory(0x8000000,sizeof(testcode),testcode)!=0) {ret= 8;break;}
//printf("Write Rom ok\n");
//if(EnRdProtect()!=0) {ret= 9;break;}
//printf("read protect\n");1
//if(EnWrProtectX(0,2)!=0) {ret= 10;break;}
//printf("write protect ok\n");
if(WriteBin2Flash(pdata, len)!=0) {ret= 8;break;}
if(VerifyRom(pdata, len)!=0) {ret= 9;break;}

if(EnWrProtectX(0,64)==0)
{
//写入写保护之后 系统会重启
if(TestLink()!=0) {ret= 1;break;} //握手失败
}else {ret= 10;break;}

if(RunProgram(0x8000000)!=0) {ret= 11;break;}
break;
}
stm32isp.release(stm32isp.fd);
return ret;
}

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明