本帖最后由 iysheng 于 2016-6-22 23:27 编辑
今天重新学习下手动编写,基于库函数的简单的GPIO程序调试下。(重要的是自己熟悉下从零开始新建库函数的工程文件这个过程)。 决定在在库文件的基础上编写,主要是为了养成一个好习惯啊,谁让库文件那么方便呢,降低了开发的技术水平要求,我偷懒了啊。。。。 下载库文件,去官网,养成好习惯。 但是,也没有下载下来,因为需要注册,自己的邮箱一直没有收到ST发过来的邮件。所以,就百度出来,最后在这个网站上下载下来了。(上传到附件了)
解压后如下所示:
接着就根据STM32f10x_stdperiph_lib_um学习怎么新建工程文件了(虽然网上很多这样的教程,但是自己以前只是按照网上的操作,一般都是新建很多文件夹云云,自己没有真正明白固件库的代码结构),所以今天准备按照官方的资料自己学习怎么创建基于库文件的工程创建,打开:
点击进入下面界面:
第一个重要的文件stm32f10x.h
由于我的红牛板的主芯片是STM32F103ZE,根据F103ZE的资料512kb:
选择define STM32F10X_HD。(这个很重要,后面就知道了)。
第二个重要的文件,system_stm32f10x.c同时需要的就是system_stm32f10x.h 至此,我们明白了需要者三个文件。 接着,就开始创建工程了:
新建一个文件夹:
选择芯片型号:
接下来选择是添加startup_stm32f10x_hd.s,界面如下:
把刚才的文件添加到文件夹里面,还要添加到这个工程里面,并新建一个main函数,编译如下:
Google出来解决办法如下:
修改后重新编译如下:
至此,整个最简单的基于库文件的工程模板算是有了雏形了,接下来还是测试下LED灯看看吧:
编写一个GPIO函数如下,添加stm32f10x_gpio.c stm32f10x_gpio.h stm32f10x_rcc.c stm32f10x_rcc.h如下所示:
出现错误如上,解决办法和刚才的类似,如下所示:
重新编译下:
接下来开始编写函数,如下(实现led闪烁):
下载程序测试下现场效果如下:
效果正常、单步调试看看,也是正常的,至此,自己算是更加深入的了解了,库函数的使用机制(后续,方便大项目的时候可以优化一些文件结构,要不然自己只是会操作而不明白到底是怎么回事)。
提示下:添加某个外设的.c文件后,可以不用单独地在主函数头部声明对应的.h文件,因为我们可以用一个stm32f10x_conf.h,其主要内容如下:
如果新添加了一个外设,可以在这里取消注释就行了,方便简洁: |