历史上的今天
返回首页

历史上的今天

今天是:2024年09月19日(星期四)

正在发生

2019年09月19日 | 第6章 新建工程-寄存器版—零死角玩转STM32-F429系列

2019-09-19 来源:eefocus

本章内容所涉及的软件只供教学使用,不得用于商业用途。个人或公司因商业用途导致的法律责任,后果自负。


版本说明:MDK5.15


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


6.1 新建工程

6.1.1 新建本地工程文件夹

为了工程目录更加清晰,我们在本地电脑上新建1个文件夹用于存放整个工程,如命名为"LED",然后在该目录下新建2个文件夹,具体如下:


表格 8 工程目录文件夹清单

image.png?imageView2/2/w/550


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

图 61 工程文件夹目录


在本地新建好文件夹后,在文件夹下新建一些文件:


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

image.png?imageView2/2/w/550

6.1.2 新建工程

打开KEIL5,新建一个工程,工程名根据喜好命名,我这里取LED-REG,直接保存在LED文件夹下。

图 62 在KEIL5中新建工程


1.    选择CPU型号

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

图 63 选择具体的CPU型号


2.    在线添加库文件

用寄存器控制STM32时我们不需要在线添加库文件,这里我们点击关掉。

图 64 库文件管理


3.    添加文件

在新建的工程中添加文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

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


4.    配置魔术棒选项卡

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


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

图 66 添加微库


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

图 67 配置 Output 选项卡


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

图 68 配置 Listing 选项卡


5.    下载器配置

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


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


①JLINK/ARM-OB配置


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

图 69 JLINK/ARM-OB下载配置


②ST-LINK配置


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


 

图 610 ST-LINK下载配置


③ULINK2配置


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

图 611 ULINK2下载配置


6.    选择CPU型号

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

图 612 选择芯片型号


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


推荐阅读

史海拾趣

General Instrument Optoelectronics公司的发展小趣事
检查电源电路是否正常,电源是否稳定。
CLANDELL公司的发展小趣事

品质是CLANDELL公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格把控。同时,公司还加强了售后服务体系建设,确保客户在使用过程中能够得到及时、有效的支持。这些举措不仅提升了CLANDELL公司的产品品质,也赢得了客户的信任和好评。

巴丁微公司的发展小趣事

近年来,巴丁微在电子行业的发展取得了显著成就。在近千家参评企业中,巴丁微脱颖而出,成功入选2023粤港澳大湾区科创榜专精特新标杆企业TOP100榜单。这一荣誉的获得,不仅是对巴丁微技术实力和产品质量的认可,也反映了公司在行业内的领先地位和影响力。

这一荣誉的取得,为巴丁微未来的发展奠定了坚实的基础。公司将继续秉承创新引领、协同发展的理念,不断提升技术水平和产品质量,为电子行业的发展贡献更多力量。

AEM [ American Electronic Materials]公司的发展小趣事

在追求经济效益的同时,AEM始终关注环境保护和可持续发展。公司积极响应全球环保倡议,采用环保材料和生产工艺,减少生产过程中的废弃物排放和能源消耗。同时,AEM还投入大量资源研发节能环保的电子元器件产品,为客户提供更加绿色、高效的解决方案。

此外,AEM还积极参与社会公益活动,关注社会责任。公司通过捐款、赞助等方式支持教育、文化等事业的发展,为社会的和谐与进步贡献了自己的力量。

Gigarams Semiconductor Device Corp公司的发展小趣事
这可能是由于控制算法复杂或系统响应速度不足导致的。解决方案包括简化控制算法、提高系统响应速度或采用更高效的控制策略。
EOZ Secme公司的发展小趣事

EOZ Secme深知人才是企业发展的核心动力。因此,公司高度重视人才的培养和引进。通过设立研发中心、提供优厚的福利待遇等方式,EOZ Secme吸引了大量优秀人才加入。同时,公司还建立了完善的培训体系,不断提升员工的技能和素质。这些措施为EOZ Secme的持续发展提供了有力的人才保障。

问答坊 | AI 解惑

在 VC++中用ActiveX 控件实现与单片机的串行通信

详细论述在VC++6.0 中使用ActiveX 控件通过串口与单片机进行二进制数据传输的具体方法。 …

查看全部问答>

SDA SCL 在每个阶段到时是怎么赋值的

#include #include #define uchar unsigned char #define uint unsigned int #define NOP4() {_nop_();_nop_();_nop_();_nop_();} sbit SCL = P1^0; sbit SDA = P1^1; sbit SPK = P3^0; uchar code HI_LIST[] = {       ...…

查看全部问答>

vc2005开发嵌入式设备,有没有比较好的打开图象(jpg,png..tiff....)的开源库?

vc2005开发嵌入式设备,有没有比较好的打开图象(jpg,png..tiff....)的开源库?…

查看全部问答>

刚刚飞奔把板子取回来!~

刚把板子取回来,由于今天有事情,所以明天来个开箱图片贡献给大家!~…

查看全部问答>

ST发布双Cortex-A9核心的新一代处理器

这不是俺负责的产品,大家自己看看吧: New-Generation Microprocessor from STMicroelectronics Targets High-Performance Connectivity and Embedded Applications …

查看全部问答>

寻迹蓝牙射频小车制作

最近做了个小车,目前是用蓝牙功能来控制的,不过正反,正反转就把驱动IC给烧了     是P,NMOS的死区时间没加的原因吗? [ 本帖最后由 蓝雨夜 于 2011-9-16 09:24 编辑 ]…

查看全部问答>

【设计工具】EASYPATH-6 FPGA简介

EasyPath™-6 FPGA是赛灵思公司 (Xilinx, Inc. (NASDAQ: XLNX))推出的新产品,该产品为高性能 FPGA 进入量产器件提供了六周内即可实现的总成本最低、风险最小的的解决方案, 在所有FPGA降低成本解决方案中转入量产时间最快。新款 EasyPath FPG ...…

查看全部问答>

SCI 怎么接收数据。。。急!!!!!!

各位大神,我是新手,请教SCI 怎么接收数据?用串口调试助手发个数,板子怎么接收,有接收子程序吗?…

查看全部问答>

关于platform_device与platform_driver 的认识和了解

做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义 platform_driver-> 注 ...…

查看全部问答>