【嵌入式】STM32的库函数使用

来源:互联网 发布:在线画板软件 编辑:程序博客网 时间:2024/05/22 15:13

使用编译环境为MDK5,烧录器将会使用JTAG和串口两种,芯片为STM32F103C8T6


零、前准备
1.MDK5编译环境
2.JTAG驱动或串口驱动
一、建立工程模板,写一个简单的小程序
1).创建工程目录
这里就会使用MDK创建工程了,由于STM32的工程已经比较大了,所以在工程目录下将会再创建多个目录,以便整理。
(说明一下,其实随便放都可以,只要工程都能包含以下说到的文件即可)
这里工程名就叫template吧(.\代表工程目录):
.\CORE 存放芯片内核驱动文件;
.\FWLIB 使用库函数的话存放库函数;
.\OBJ 存放编译生成文件;
.\SYSTEM 存放系统代码;
.\USER 存放工程文件,应用程序等。
新建好后就可以先把将会用到的文件放进去了,这里使用的是库函数3.5版本,

1.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下有两个文件core_cm3.c和core_cm3.h放进CORE文件夹中,是CM3的内核支持文件,其他使用 CM3 内核的芯片也可以用,不一定是 stm32。这两个文件用来获取设置 CM3 内核,配置一些内核寄存器;

2.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下有用汇编语言写的内核启动代码,根据容量选不同的代码,C8T6属于MD级别的,所以复制starup_stm32f10x_md.s到CORE文件夹中;

3.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下就是各外设的库函数文件及其接口,直接把inc和src两个文件夹复制在FWLIB中;

4.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下有几个源码文件stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h 和startup_stm32f10x_hd.s 在 DeviceSupport 目录下,说明这几个文件是和具体的芯片有关的,也就是 stm32 芯片的支撑文件。其中 stm32f10x.h 是标准外设库的入口,使用标准外设库的代码中必须包含该头文件。system_stm32f10x.c, system_stm32f10x.h 这两个文件提供函数用来初始化 stm32 芯片,配置 PLL、系统时钟和内置 flash 接口。这几个文件放在.\USER里。

5.STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下有三个文件stm32f10x_it.cstm32f10x_it.h,stm32f10x_conf.h复制到.\USER文件夹中

2).创建MDK工程

1.打开MDK后选择project-->New uVision Project-->工程文件保存在USER里-->选择对应的芯片

2.在左边Project栏右键有个Manage Project Items,打开后将刚刚复制的文件都添加进去,注意不要忘了那个汇编语言写的.s文件

3.添加好后,再设置一下工程属性,Project-->Options for Target 'uCOS-II'

Output栏的Create HEX File要选上;

C/C++栏有个Include Paths里要把所有有inc文件的目录都添加上;

Debug栏这里改用J-LINK/J-TRACE Cortex。

4.修改一下文件内容

在 stm32f10x.h 的 66-73 行,根据所选芯片类型,去掉相应注释,这里我去掉STM32F10X_MD 行的注释(中容量型 stm32 芯片);

在 stm32f10x.h 的 去掉 105 行的 USE_STDPERIPH_DRIVER 注释,启用 stm32 标准外设库;

在 stm32f10x_conf.h 的 28-49 行可以把无需用到的库函数注释掉加快编译时间,同时把之前添加在工程里的库函数.c和.h文件去掉(这一步可在最后才做)。

5.就写一个LED灯闪亮的小程序

main.c

delay.c

6.编译过了点击J-LINK下载即可,串口下载方法如下:

1).先在工程生成.hex文件,步骤入下图

打开项目设置

在output栏把生成hex文件勾上

再编译一次就可以找到hex文件在输出文件夹


2).用串口把开发板和电脑接好,这一点就不说了,记住txd-->rxd,rxd-->txd。


3).先了解一下stm32的自举模式,看stm32用户手册


正常的话我们是从主闪存器启动,现在我们需要从系统存储器启动,那这个怎么办到呢?我们需要手动拔跳线帽,在开发板上找找,肯定有的。

然后打开串口助手,导入hex文件,下载后重启就可以了。


1 0