STM32——新建工程并使用寄存器以及库函数进行点灯
本文是根据江协科技提供的教学视频所写,旨在便于日后复习,同时供学习嵌入式的朋友们参考,文中涉及到的所有资料也均来源于江协科技(资料下载)。
新建工程并使用寄存器以及库函数进行点灯操作
- 新建工程步骤
- 1.建立工程
- 2.配置寄存器进行点灯操作
- 3.添加库函数
- 使用库函数进行点灯操作
新建工程步骤
- 建立工程文件夹,Keil中新建工程,选择型号
- 工程文件夹中建立Start、Library、User等文件夹,复制固件库里的文件到工程文件夹
- 在工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里(Keil不能直接添加文件夹,所以需要建立组进行添加相应文件。.h文件不参与编译过程,但是为了方便看,也加入了.h文件)
- 工程选项中,C/C++, Include Paths内需要声明所有包含头文件的文件夹(Start、Library都是自己建的,Keil软件并不知道,所以必须申明路径,将所有新建文件夹都进行申明,这样不会出现.h文件找不到的情况)
- 工程选项中,C/C++, Define内定义USE_STDPERIPH_DRIVER(使用库函数就必须定义USE_STDPERIPH_DRIVER)
- 工程选项中,Debug, 下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run
conf.h包含了所有库函数的头文件
在stm32f10x.h最后包含了conf.h,所以在使用库函数时,只需要包含stm32f10x.h这一头文件,就相当于包含了所有库函数的头文件
1.建立工程
建立工程文件夹,Keil中新建工程,选择型号
STM32是从启动文件开始执行的,所以新建工程时首先加的就是启动文件。启动文件有很多类,需要根据芯片型号选择对应的启动文件。STM32F103需要选择带有LD、MD、HD、XL的启动文件
找到STM32的启动文件,复制所有的启动文件
在工程文件目录下新建一个文件夹Start,用来存放启动文件
回到固件库中STM32F10x目录下,复制下面三个文件到刚刚新建的文件夹Start中
cm3文件是内核寄存器的描述,同样复制到Start目录下
此时,你的新建文件夹中应该包含这些文件
在Keil5中,将Source Group1重命名为Start(选中,单击进行修改),右键Add Existing Files to Group’Start’
CTRL选中所有.c以及.h文件,点击添加,添加好的文件如下,这些文件是只读文件
接着需要在工程选项里添加Start文件夹的头文件路径,否则无法找到.h文件
这样就添加好了该文件夹的头文件路径
写一个main函数测试该工程是否可行。打开工程文件夹,新建一个User文件夹
右键Target 1,点击Add Group,新建好的组改为User
右键User,点击Add New item to Group ‘user’
在main.c中右键插入头文件
文件的最后一行必须是空行,否则会warning。写好之后点击编译变建立工程按钮,0 Error,0 Warning说明工程没有问题
该工程目前是一个基于寄存器开发STM32的工程(还没有添加STM32的库函数)
2.配置寄存器进行点灯操作
如何调整字体
为了防止中文乱码问题,选择UTF-8编码
按照下图进行连接,STLINK插在电脑上,电源灯应该会常亮,另一个连接在PC13口上的灯默认闪烁状态
在Keil中配置调试器
重新编译,没有错误
点击Load,程序会下载到STM32中,板子的灯不再闪烁
以上就是通过配置寄存器进行点灯的过程,需要不断查询手册进行配置,比较麻烦
3.添加库函数
为了存放库函数,在工程文件目录下新建文件夹Library
找到固件库目录下的src以及inc,将目录下内容全部复制到工程文件目录下新建的Library中
在Keil5中右键Target新建组,改名为Library,右键Add Existing Files to Group’Start’,CTRL全部添加。这样就添加好了所有的库函数文件,但是还不能使用
在固件库目录下找到STM32F10x_StdPeriph_Template文件,复制以下三个文件
将复制的三个文件添加到工程目录下User文件夹中
在User组中添加刚刚复制的三个文件
最后还需要一个宏定义,右键打开文件
找到 USE_STDPERIPH_DRIVER
基于库函数的工程就建好了
我们只能对User组中的文件修改,通过以下步骤可以更改文件夹顺序
使用库函数进行点灯操作
右键可以跳转到函数定义,选中,使用CTRL F,查找
经过函数的包装,就不需要查询手册来确定某一位的功能,而且库函数的配置不会影响到寄存器的其他位。只需要调用库函数,按照提示,填好参数即可