移植了同事一个程序,然后死活不能用,发现启动文件错了,明天继续调。真把人折腾死了。
stm32给的库文件太琐碎了,正如它的芯片型号一样繁多,例如启动文件:
网上查到的各个文件的解释是:
startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_ld_vl.s
小容量的STM32F100xx startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx
固件库中的Release_Notes_for_STM32F10x_CMSIS.html写到:
STM32F10x CMSIS Startup files: startup_stm32f10x_xx.s
- Add new startup files for STM32 Low-density Value line devices: startup_stm32f10x_ld_vl.s
- Add new startup files for STM32 Medium-density Value line devices: startup_stm32f10x_md_vl.s
- SystemInit() function is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file
- GNU startup file for Low density devices (startup_stm32f10x_ld.s) is updated to fix compilation errors.
那到底啥是大容量,小容量啊?又查user manual才知道
也就是说,例如我用STM32F103RB,那么选启动文件为startup_stm32f10x_md.s