对象:在STM32F10X的3.5官方库的进行芯片的切换
例子:f103切换成f107
资源吸取自:野火的《【野火®】零死角玩转STM32—F103霸道》、网上大神
所需材料:STM32F10X的官方3.5的库
测试所用开发工具:MDK5.2 ; IAR 7.3;
说明:至于怎么使用STM32的库建立MDK工程或IAR工程,我是看火哥的教程搞的,野火的教程只是MDK的工程但是和IAR工程的建立是一个道理的只要把涉及到的MDK的文件替换成IAR文件就行了,至于碰到错误和警告如何修改,可以查看我之后的博客。
一、原理依据
从上面可以看到不同芯片对应不同的.s文件,这个要切换。另外还要切换的是预编译器里的宏定义,例如STM32F10X_CL/STM32F10X_HD/……等
二、MDK5.2下的切换
目标:将STM32F103ZET工程切换成STM32F107VC工程。
看图说话:
1.将f103切换成f107,
2.在c/c++预编译上用STM32F10X_CL把STM32F10X_HD的替换掉。因为107是CL,而103ZET是HD
3.把startup_stm32f10x_hd.s去掉,添加startup_stm32f10x_cl.s
这三步就完成了f103到f107的切换,编译无错。
三、IAR下的切换
同MDK的步骤,结果会出现警告,是startup_stm32f10x_cl.s中NOROOT的问题,如下问题:
解决方法:添加NOROOT,就是在REORDER后面加:NORROT就OK了,如下图,上面一个我已经改了,下面圆圈里的还没改(作为错误对照)
另外发现IAR7.3下直接改变芯片编译不会出错,看来IAR没有MDK严谨呀!
四、其他芯片型号的切换
同理,其他芯片的切换,也是:1,对应芯片startup_stm32f10x_xxx.s的替换,2.预编译c/c++下面的全局宏定义替换下,OK了。