完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
先打开文件并且初始化stm32的下载接口,其中 InitStm32Isp 用来初始化下载接口 int main (int argc, char *argv[]) { unsigned char *codebuf; int len,rst; FILE *fp; if(argc<2) { printf("no bin filen"); return 1; } fp=fopen(argv[1],"rb"); if(fp<=0) { printf("open file errorn"); return 2; } //把文件的位置指针移到文件尾 fseek(fp,0,SEEK_END); //获取文件长度; len=ftell(fp); fseek(fp,0,SEEK_SET); codebuf=malloc(len); rst=fread(codebuf,1,len,fp); printf("read:%d %dn",len,rst); InitStm32Isp(opencom,writecom,readcom,flushcom,closecom ); rst=DemoPro(codebuf,len); printf("pro rst=%dn",rst); free(codebuf); return 0; } 烧录过程: int DemoPro(unsigned char *pdata,int len) { int ret=0; stm32isp.fd=stm32isp.open(); printf("fd:%dn",stm32isp.fd); while(1){ if(TestLink()!=0) {ret= 1;break;} //握手失败 if(GetVersionAndCmd()!=0) {ret= 2;break;} //获取版本失败 printf("ver:%d.%dn",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:%Xrn",stm32isp.typeid); if(ReadMemory(0x1FFFF7E8,12,(unsigned char*)stm32isp.onlyId)!=0) //读取唯一id,读取失败则解锁再读取 { printf("read id erorn"); if(UnRdProtect()!=0) {ret= 6;break;} continue; } else printf("stm32id:%08X%08X%08Xn",stm32isp.onlyId[0],stm32isp.onlyId[1],stm32isp.onlyId[2]); if(EraseFlash()!=0) { //擦除失败 就擦除读保护 printf("Erase Chip errorn"); if(UnRdProtect()!=0) {ret= 7;break;} continue; } //if(WriteMemory(0x8000000,sizeof(testcode),testcode)!=0) {ret= 8;break;} //printf("Write Rom okn"); //if(EnRdProtect()!=0) {ret= 9;break;} //printf("read protectn");1 //if(EnWrProtectX(0,2)!=0) {ret= 10;break;} //printf("write protect okn"); 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; } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1228 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1241 浏览 1 评论
647 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
486 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1173 浏览 2 评论
1693浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
359浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
346浏览 3评论
336浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
316浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-5 13:47 , Processed in 0.779273 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191