很早前买的stm32 f103c8tb最小系统板一直在吃灰,今天决定拿出来搞搞。
下载程序可以有三种方式,这里介绍ISP方式,为什么叫ISP我觉得没有道理,还不如叫串口烧写,四根线就够了,还需要一个cp2012usb2uart。flansh loader烧写的时候需要将boot模式切换到从system memory启动,具体操作起来就是将boot的引线开关换个档。
利用cp2012下载程序到f103c8tb最小系统板boot模式的细节可以查datasheet,往深了讨论又关乎到地址空间的分配。
address spaceflashloader是往0x 0800 0000的地址写程序,这个时候需要调到boot from system memory。
flash loader大前提实在window7下。开发环境,一开始折腾了很久命令行编译,虽然这条路很酷,不过的确充满艰难,实在是不推荐。不过记录下失败过程,先是想用eclipse c++ CDT gnu-arm-ebai ,后来弄着弄着发现可以连eclipse都不用,直接gnu-arm-eabi cygwin。后来实在是坑太多,无奈放弃。
选择用keil的时候,一开始循着百度出来的很多教程,折腾了keil4 + stm标准外围库,最后发现弄个led灯都把我给弄死了,时间从早上10点开始弄到现在都晚上7点多了,还是没有放弃,因为期间发现keil编译老是报 c++ compil 意外退出,查百度说是路径有中文,重装了系统,用户名设置为全英文。
下载keil5+keil5 pack。弄了会儿才发现keil从5开始就提供了一种更为优雅的库提供方式,利用可执行的pack文件即可轻松管理标准外围库的调用。不过到这里又遇到头文件调用的坑,一开始看着有GPIO_stm32f10x.c,便以为头文件应该是 GPIO_stm32f10x.h,虽然的确有这个头文件,但是这个头文件里的api并不是用来用户调用的,后来查到一篇别人写的跑马灯示例程序,拿过来可以用,留意才发现,系统供用户调用的接口都在pack目录里device\stdperiph\inc\..而且命名规则也变成了stm32f10x_gpio.h
成功点亮。
keil5点亮gpio灯
网友评论