一、错误背景
1、大背景:对STM32进行DFU功能开发
1.1 硬件背景:
STM32F103C8T6(其他型号应该是类似的),下面简写为32
1.2软件背景:
1.2.1 在ST官网下载的最新版DfuSe Demo(v3.0.6),这个是dfu下载的软件。
1.2.2 keil5程序开发软件
二、出现时机
向32中下载自己编写好的程序,打开DfuSe软件,使用usb线连接PC与32,之后就出现了下面这个错误界面。
三、产生错误的原因
经查资料发现了下面这一句话至关重要:
大概意思是必须得通过添加接口的可选设置的字符串来指出你有多少内存,哪些可写哪些只读。这个是我忽略掉的,我想当然地认为不就是一个字符串吗,没想到有这么大用处关于@Internal FLash …的含义小五也是摘取出来了,放在下面。
就这样,原因找到了,怎么解决呢!!!
四、解决方案
在usb描述符配置中添加这样一个字符串就可以解决了,下面贴出小五的字符串
当然,由于连带责任,你还需要去多修改几个细节问题,
比如
1、在配置描述符中可选设置描述符中的字符串索引。
2、在配置文件usb_prop中有字符串集合,类似String_Descriptor[ ]。
3、配置文件usb_prop中的获取字符串的函数GetStringDescriptor中的if判断语句。
4、其他相关的变量声明,函数声明等细节
五、编译下载
是不是成功了,没有成功就多检查一下吧,一般就是这里的问题了。
成功界面将显示出刚才配置的内存。
双击它可以查看具体的配置信息。需要注意的是配置内存不要超出芯片的最大范围。
六、都看到这里了点个赞吧
既然都点赞了,小五搜集的DFU相关资料就送你了。微信扫码搜索DFU。