1.zet6转c8t6几个改变的地方:
(1)Device类型修改;
(2)C/C++下的Define中的STM32F10X_HD修改为STM32F10X_MD;
(3)Flash Download下要将芯片类型修改为Med_density 128k这种;
(4)工程启动文件startup里面换成startup_stm32f10x_md.s。
2.自动下载电路与j_link的冲突:
我的ISP自动下载电路为:
我用这个自动下载电路将左上角四个跳线帽都接上之后,用j_link下载程序出现如下错误:**JLink Warning: Could not set S_RESET_ST;然后总是出问题,后来再网上找到答案“”“把CPU的复位信号不要连到其它专用复位芯片上就OK了。”将我的电路图的左上角3跳线帽摘掉果然就好了。
接着我又试了一下自动下载电路,这下又将3跳线帽加上,结果完全可以实现自动下载。DTR与RTS的接法可以使用,但是DTR直接接了RESET,这个导致j_link下载失败,以后可以考虑下面我找的一个比较好的自动下载电路:
该电路用三极管将DTR管脚与RSET分开,正常情况下三极管不导通,因此使用j_link下载时不会受影响。
3.STM32的几种启动模式
BOOT0接GND,BOOT1接GND.那就是正常的启动模式,从flash加载代码.
而BOOT0接V3.3,BOOT1接GND.则是ISP模式,也就是串口更新代码.
其次,你要了解STM32 ISP下载代码的过程.
首先BOOT0接V3.3,然后复位STM32.STM32就会加载ISP代码(固化存储在内部),从而进入ISP模式.此时便可以通过串口下载程序了.
最后再来看看一键下载是怎么实现的呢?
从原理图可知:DB9串口的RTS控制BOOT0,DTR控制RST.
我们要达到下载的目的,就必须先让RTS拉高BOOT0(设置BOOT0为1),然后再让DTR控制RST为低(STM32为低电平复位).然后再释放RTS为高(停止复位),然后再开始串口下载代码(此时BOOT0可以为高,也可以为低).
所以我们看到mcuisp连接过程是:
DTR电平置高(3-12V),复位(DTR接了RST)
RTS置低(-3--12V),选择进入BootLoader(RTS接了BOOT0)
...延时100毫秒
RTS电平变高(+3-+12V)释放复位(释放复位,但是此时BOOT0为高,所以进入ISP模式)
开始连接...4, 接收到:1F (连接成功)
在串口COM0连接成功@230400bps,耗时437毫秒
DTR维持高
【需要注意的是 DTR_N是DTR的反相电平 RTS_N是RTS的反相电平】