历史上的今天
返回首页

历史上的今天

今天是:2024年09月28日(星期六)

2019年09月28日 | 再造STM32---第八部分:新建工程—库函数版

2019-09-28 来源:eefocus

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



8.1 新建工程:

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

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


8.1.1 新建本地工程文件夹:

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

表 8-1 工程目录文件夹清单

image.png?imageView2/2/w/550                      

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


表 8-2 工程目录文件夹内容清单

image.png?imageView2/2/w/550

       打开 KEIL5,新建一个工程,工程名根据喜好命名,我这里取 STM32F4_SUM,保存在ProjectRVMDK(uv5)文件夹下。

1. 选择 CPU 型号:

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

2. 在线添加库文件:

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

3. 添加组文件夹:

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

表 8-3 工程内组文件夹内容清单

image.png?imageView2/2/w/550

4. 添加文件:

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

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

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

6. 配置魔术棒选项卡:

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

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

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

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

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

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

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

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


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


7. 下载器配置:

       本书使用的仿真器是 JLINK,可下载和仿真程序。JLINK 支持XP/WIN7/WIN8/WIN10 这几个操作系统,使用非常方便,具体配置见如下图。

8. 选择 CPU 型号:

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

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

推荐阅读

史海拾趣

Corsair Electrical Connectors Inc公司的发展小趣事

随着市场的不断发展,Corsair意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进先进技术和设备,不断提升产品的性能和质量。在一次次的尝试和失败后,Corsair的研发团队终于突破了行业技术瓶颈,成功开发出了一款具有高性能、高稳定性的连接器产品。这一创新成果不仅赢得了客户的青睐,也为公司在行业中树立了良好的口碑。

台湾第一电阻(Firstohm)公司的发展小趣事
电冰箱门密封不严会导致冷气泄漏和能耗增加。如果发现门密封不严,首先应检查密封条是否老化或破损,如果是则应及时更换新的密封条。此外,还应注意检查门铰链是否松动或变形,如果存在问题应及时调整或更换。
Dolphin Interconnect Solutions Asa公司的发展小趣事

Dolphin Interconnect Solutions ASA深知创新是企业发展的根本动力。因此,公司不断投入研发资源,鼓励员工进行创新实践。同时,Dolphin还注重人才培养和引进,建立了一支高素质、专业化的技术团队。这些人才为公司的发展提供了源源不断的创新动力。

Coil-Q Corporation公司的发展小趣事

随着全球市场的开放和融合,Coil-Q意识到国际化是公司发展的必然趋势。于是,公司开始积极布局海外市场,先后在多个国家和地区设立了分公司或办事处。通过深入了解当地市场需求和文化习惯,Coil-Q成功打开了多个新的市场,实现了业务的快速增长。

Grayhill公司的发展小趣事
选择高质量的元件,如功率晶体管、电容、电阻等,以保证电路的稳定性和可靠性。
HELUKABEL公司的发展小趣事
如汽车音响、车载充电器等需要稳定电压和电流的电子设备。

问答坊 | AI 解惑

硬件工程师的设计之路

难得休息两天,回到工作,第一件事情是给媳妇帮忙翻译论文,而手头上的事情虽然充满着挑战,当总体还是应付的过来。由于很长一段的时间都是直接给国外做支持工作,对比国内项目的管理,让我生出了一种感受,同样的方法,同样的流程,到了我们这里一 ...…

查看全部问答>

求一个可用的MicroSD完整的读写程序

求一个可用的MicroSD完整的读写程序,哪位有?…

查看全部问答>

寒假充电去十佳的睿尔嵌入式学院

14楼 我们还没提价呢,不过年后是要涨的,大家欲学习从速! RE.ER嵌入式学院是中国西部地区名副其实的、最具实力的嵌入式技术教育培训中心。      【深厚的行业背景】------ 从2003年开始,RE.ER相关人员就已开始嵌入式技术 ...…

查看全部问答>

How to modify the calibrui

目前已clone WINCE 自帶的calibrui出來修改 我想加入一段時間都沒校準,就跳出程式的功能 但怎麼修改都失敗 請問有高手能指教一下嗎?…

查看全部问答>

你们的系统上memcpy的速度如何?

我用的s3c6410+wince6.0,内存是外频133M的mDDR,CAS=3,burst=4,用的是友坚的BSP和核心板。 在启动了cache, write-buffer,write-back等功能之后,理论读取速度应该是4*(133*4/(3+2))大约400MB,写入也是这么多。 可是测试程序运行时间的时候, ...…

查看全部问答>

TI阅读:运算放大器增益稳定性第1部分:一般系统稳定

本帖最后由 dontium 于 2015-1-23 13:33 编辑 大学学的你还记得多少?呵呵,这可是中文版! …

查看全部问答>

中断

msp430有几个中断啊?中断函数怎么用?什么中断标志吗,中断置位,中断清除那些是什么关系…

查看全部问答>

请问USI的I2C怎么用?

芯片资料上的USI寄存器有点看不明白, 硬件上是不是集成了SPI,I2C的收发器还是要软件模拟? 从TI官网上下了个USI_I2CMaster的函数库,初始化的时候端口上看不到波形,USI_I2CSelect E2PROM的就死在里面了,应该是等不到响应信号.不知道哪里有更详细的资 ...…

查看全部问答>

电梯的RFID控制

本帖最后由 dontium 于 2015-1-23 13:18 编辑 RFID的与电梯的控制与运行是否有比较好的解决方案求高手支招 …

查看全部问答>