第10章 新建工程-库函数版—零死角玩转STM32-F429系列

第10章 ????新建工程—库函数版

全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn

野火视频教程优酷观看网址:http://i.youku.com/firege

?

了解STM32的标准库文件之后,我们就可以使用它来建立工程了,因为用库新建工程的步骤较多,我们一般是使用库建立一个空的工程,作为工程模板。以后直接复制一份工程模板,在它之进行开发。

本章的"工程模板"范例可在配套资料中找到,自己新建工程模版时可参考该工程。

10.1 新建工程

版本说明:MDK5.15 (MDK即KEIL软件)

版本号可从MDK软件的"Help-->About uVision"选项中查询到。

10.1.1 新建本地工程文件夹

为了工程目录更加清晰,我们在本地电脑上新建一个"工程模板"文件夹,在它之下再新建6个文件夹,具体如下:

表 101 工程目录文件夹清单


名称


作用


Doc


用来存放程序说明的文件,由写程序的人添加


Libraries


存放的是库文件


Listing


存放编译器编译时候产生的C/汇编/链接的列表清单


Output


存放编译产生的调试信息、hex文件、预览信息、封装库等


Project


用来存放工程


User


用户编写的驱动文件

图 101 工程文件夹目录

在本地新建好文件夹后,把准备好的库文件添加到相应的文件夹下:

表 102 工程目录文件夹内容清单


名称


作用


Doc


工程说明.txt


Libraries


CMSIS:里面放着跟CM4内核有关的库文件


STM32F4xx_StdPeriph_Driver:STM32 外设库文件


Listing


暂时为空


Output


暂时为空


Project


暂时为空


User


stm32f4xx_conf.h:用来配置库的头文件


stm32f4xx_it.h
stm32f4xx_it.c:中断相关的函数都在这个文件编写,暂时为空


main.c:main函数文件

10.1.2 新建工程

打开KEIL5,新建一个工程,工程名根据喜好命名,我这里取LED-LIB,保存在Project\RVMDK(uv5)文件夹下。

图 102 在KEIL5中新建工程

1.????选择CPU型号

这个根据你开发板使用的CPU具体的型号来选择, M4至尊版选STM32F429IGT型号。如果这里没有出现你想要的CPU型号,或者一个型号都没有,那么肯定是你的KEIL5没有添加device库,KEIL5不像KEIL4那样自带了很多MCU的型号,KEIL5需要自己添加,关于如何添加请参考《如何安装KEIL5》这一章。

图 103 选择具体的CPU型号

2.????在线添加库文件

等下我们手动添加库文件,这里我们点击关掉。

图 104 库文件管理

3.????添加组文件夹

在新建的工程中添加5个组文件夹,用来存放各种不同的文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

表 103 工程内组文件夹内容清单


名称


作用


STARTUP


存放汇编的启动文件:startup_stm32f429_439xx.s


STM32F4xx_StdPeriph_Driver


与STM32外设相关的库文件

misc.c

stm32f4xx_ppp.c(ppp代表外设名称)


USER


用户编写的文件:

main.c:main函数文件,暂时为空

stm32f4xx_it.c:跟中断有关的函数都放这个文件,暂时为空


DOC


工程说明.txt:程序说明文件,用于说明程序的功能和注意事项等

????图 105 如何在工程中添加文件夹????

4.????添加文件

先把上面提到的文件从ST标准库中复制到工程模版对应文件夹的目录下,然后在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

图 106 如何在工程中添加文件

5.????设置文件是否加入编译

STM32F429比较特殊,它有用FMC外设代替了FSMC外设的功能,所以它的库文件与其它型号的芯片不一样,在添加外设文件时,stm32f4xx_fmc.c和stm32f4xx_fsmc.c文件只能存在一个,而且我们的STM32F429芯片必须用fmc文件。如果我们把外设库的所有文件都添加进工程,也可以使用下面的方法,设置文件不加入编译,这样也不会导致编译问题。这种设置在开发时也很常用,暂时不把文件加进编译,方便调试。

图 107 设置文件是否加入编译

6.????配置魔术棒选项卡

这一步的配置工作很重要,很多人串口用不了printf函数,编译有问题,下载有问题,都是这个步骤的配置出了错。

(1)????Target中选中微库" Use MicroLib",为的是在日后编写串口驱动的时候可以使用printf函数。而且有些应用中如果用了STM32的浮点运算单元FPU,一定要同时开微库,不然有时会出现各种奇怪的现象。FPU的开关选项在微库配置选项下方的"Use Single Precision"中,默认是开的。

图 108 添加微库

(2)????在Output选项卡中把输出文件夹定位到我们工程目录下的"output"文件夹,如果想在编译的过程中生成hex文件,那么那Create HEX File选项勾上。

图 109配置 Output 选项卡

(3)????在Listing选项卡中把输出文件夹定位到我们工程目录下的"Listing"文件夹。

图 1010配置 Listing 选项卡

(4)????在C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。

图 1011配置 C/C++ 选项卡

在这个选项中添加宏,就相当于我们在文件中使用"#define"语句定义宏一样。在编译器中添加宏的好处就是,只要用了这个模版,就不用源文件中修改代码。

?????STM32F429_439xx宏:为了告诉STM32标准库,我们使用的芯片是STM32F429型号,使STM32标准库根据我们选定的芯片型号来配置。

?????USE_STDPERIPH_DRIVER宏:为了让stm32f4xx.h包含stm32f4xx_conf.h这个头文件。

"Include Paths "这里添加的是头文件的路径,如果编译的时候提示说找不到头文件,一般就是这里配置出了问题。你把头文件放到了哪个文件夹,就把该文件夹添加到这里即可。(请使用图中的方法用文件浏览器去添加路径,不要直接手打路径,容易出错)

7.????下载器配置

这部分的配置最好是在安装好下载器驱动,下载器连接了电脑和开发板,且开发板上电后来配置。

这里面需要根据你使用了什么仿真器来配置,常用的有三种仿真器:JLINK/ARM-OB,ST-LINK,ULINK2,而且这个配置不是配置完一次之后以后就不会改变,当你换了芯片型号,或者其他操作(具体原因不明)都会改变下载器的配置。

(1)????JLINK/ARM-OB配置

要先安装了JLINK驱动之后,该配置才能下载,两者缺一不可。

图 1012 JLINK/ARM-OB下载配置

②ST-LINK配置

要先安装了ST-LINK驱动之后,该配置才能下载,两者缺一不可。

图 1013ST-LINK下载配置

③ULINK2配置

要先安装了ULINK2驱动之后,该配置才能下载,两者缺一不可。要注意的是设置成ULINK2,而不是ULINK。

图 1014ULINK2下载配置

8.????选择CPU型号

这一步的配置也不是配置一次之后完事,常常会因为各种原因需要重新选择,当你下载的时候,提示说找不到Device的时候,请确保该配置是否正确。有时候下载程序之后,不会自动运行,要手动复位的时候,也回来看看这里的"Reset and Run"配置是否失效。M4至尊版用的STM32的FLASH大小是1M,所以这时选择1M的容量,如果使用的是其他型号的,要根据实际情况选择。

图 1015 选择芯片型号

一个新的工程模版新建完毕。

10.2 每课一问

1.????参考本章配套的"工程模版"范例,建立一个自己的工程模板,确保编译后没有警告及错误。

?

?

时间: 2024-08-25 00:22:54

第10章 新建工程-库函数版—零死角玩转STM32-F429系列的相关文章

第10章 新建工程—库函数版

第10章     新建工程-库函数版 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 了解STM32的标准库文件之后,我们就可以使用它来建立工程了,因为用库新建工程的步骤较多,我们一般是使用库建立一个空的工程,作为工程模板.以后直接复制一份工程模板,在它之进行开发. 本章的"工程模板"范例可在配套资料中找到,自己新建工程模版时可参考该工程. 10.1 新建工程 版本说

第40章 CAN—通讯实验—零死角玩转STM32-F429系列

第40章     CAN-通讯实验 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册2>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 若对CAN通讯协议不了解,可先阅读<CAN总线入门>.<CAN-bus规范>

第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

第8章 ????自己写库-构建库函数雏形 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F429规格书> 虽然我们上面用寄存器点亮了 LED,乍看一下好像代码也很简单,但是我们别侥幸以后就可以一直用寄存器开发.在用寄存器点亮 LED 的时候,我们会发现 STM32 的寄存器都是 32 位的,每次

第13章 GPIO-位带操作—零死角玩转STM32-F429系列

第13章 ????GPIO-位带操作 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 本章参考资料:<STM32F4xx 中文参考手册>存储器和总线构架章节.GPIO章节,<Cortex?-M4内核编程手册>2.2.5 Bit-banding.学习本章时,配套这些参考资料学习效果会更佳. 13.1 位带简介 位操作就是可以单独的对一个比特位读和写,这个在51单

《零死角玩转STM32》-17-EXTI外部中断/事件控制器

/* * 本文中的相关图片来自火哥的教程,只作为随笔记录,无侵权之意 * 21:25:46, 2017-04-08 */ EXTI:外部中断/事件控制器.STM32F429共有23根,其中EXTI0~EXTI15,分别对应GPIO中的PX0 ~ PX15,另外7根线有如下用途: (中间省略了EXTI1 ~ EXTI15) EXTI功能框图如下所示: 按照图中的序号标识,可以清晰的看出外部GPIO引脚上的电平变化是如何传递到内核,即GPIO -> EXTI -> NVIC,并触发相应的中断/事件

《零死角玩转STM32》-18-SysTick系统滴答定时器

参考资料:<STM32F4XX内核参考手册>:4.4.8-SHPRX(System Handler Priority Register)与4.5- System Tick Timer. 1. 简介 SysTick是一个24Bit的系统定时器,属于CM4内核的外设,相关寄存器与部分库函数中core_cm4.h中定义.SysTick一般用于操作系统,用于产生时基,维持OS的心跳. 如下所示:当计数器被使能(STC_CTRL: Bit0-ENABLE)并且计数器到0时,STK_LOAD中的预设值会被

《零死角玩转STM32》中的C语言之指针

关于Pointer,一定要杜绝"野指针"!下面的代码中定义了一个指向NVIC_InitTypeDef结构体类型的指针,但是并没有用"一块内存地址"来初始化该指针,因此是一个野指针! 由于没有被初始化,该指针可能指向内存的任何地方,包括0X00000000,由此带来的后果是对该指针的一切间接引用都是非法的,很有可能修改内存中代码区/数据区的数据.一定要杜绝使用这种指针! static void EXTI_NVIC_Config(void){ NVIC_InitType

第12章 GPIO输入-按键检测—零死角玩转STM32-F429系列

第12章 ????GPIO输入-按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 按键检测使用到GPIO外设的基本输入功能,本章中不再赘述GPIO外设的概念,如您忘记了,可重读前面"GPIO框图剖析"小

第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列

第11章 ????GPIO输出-使用固件库点亮LED 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 利用库建立好的工程模板,就可以方便地使用STM32标准库编写应用程序了,可以说从这一章我们才开始迈入STM32开发的大门. LE