历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月29日 | 再造STM32---第四部分:新建工程---寄存器版

2019-09-29 来源:eefocus

4.1 新建工程:


4.1.1 新建本地工程文件夹:

 

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

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

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

4.1.2 新建工程:


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

1. 选择 CPU 型号:


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

2. 在线添加库文件:


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

3. 添加文件:

 

       在新建的工程中添加文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。我们对要添加的三个文件说明如下:


startup_stm32f429_439xx.s

       启动文件,系统上电后第一个运行的程序,由汇编编写, C 编程用的比较少,可暂时不管,这个文件从固件库里面拷贝而来,由官方提供。文件在这个目录: STM32F429固件库STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm


stm32f4xx.h

      用户手动新建,用于存放寄存器映射的代码,暂时为空。


main.c

      用户手动新建,用于存放 main 函数,暂时为空。

4. 配置魔术棒选项卡:


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


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

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

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


5. 下载器配置:


       在仿真器连接好电脑和开发板且开发板供电正常的情况下,打开编译软件 KEIL,在魔术棒选项卡里面选择仿真器的型号,具体过程看图示:

Debug 选项配置

Utilities 选项配置

Debug Settings 选项配置

        选择目标板,具体选择多大的 FLASH 要根据板子上的芯片型号决定。 F429选 1M。这里面有个小技巧就是把 Reset and Run 也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位。擦除的 FLASH 大小选择 Sectors 即可,不要选择 Full Chip,不然下载会比较慢。

4.1 下载程序:


如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行。下载程序不需要其他额外的软件,直接点击 KEIL 中的 LOAD 按钮即可。

       程序下载后, Build Output 选项卡如果打印出 Application running…则表示程序下载成功。如果没有出现实验现象,按复位键试试。当然,这只是一个工程模版,我们还没写程序,开发板不会有任何现象。


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

推荐阅读

史海拾趣

CYAN公司的发展小趣事

1996年,瑞典的工程师Jan Nilsson在电子行业中创立了CYAN公司,专注于高性能网络设备的研发。在初创阶段,CYAN就凭借其独特的技术理念和创新的产品设计,赢得了市场的初步认可。公司推出了一款具有高效能和高可靠性的网络交换机,解决了当时网络传输中的瓶颈问题,从而在市场中崭露头角。

Galaxy ( Bel )公司的发展小趣事

为了进一步拓展业务领域,CYAN在2015年收购了Polestar的量产车改装部门,获得了其在汽车电子领域的技术积累和市场资源。这次收购使CYAN能够更深入地了解汽车电子系统的需求,同时也为其带来了新的增长点。

Hitachi Metals公司的发展小趣事

在全球经济一体化的大背景下,Hitachi Metals积极应对各种挑战,通过战略并购不断壮大自身实力。近年来,公司先后并购了多家在电子材料、自动化零件等领域具有领先地位的企业,如Waupaca公司、SH cooper铜业等。这些并购不仅拓宽了日立金属的产品线,还增强了其在全球市场的竞争力。通过整合并购企业的资源和优势,Hitachi Metals在电子行业的地位进一步巩固和提升。

BEKA Associates Ltd公司的发展小趣事

人才是企业发展的核心竞争力。BCD Semi(Diodes)非常重视人才队伍的建设和培养。公司积极引进国内外优秀的研发、生产和销售人才,为他们提供良好的工作环境和职业发展机会。同时,公司还注重员工的培训和提升,定期组织各类培训活动和技术交流会议,帮助员工不断提升自身的专业技能和综合素质。通过这些措施,BCD Semi成功打造了一支高素质、专业化的人才队伍,为公司的持续发展提供了有力的人才保障。

请注意,这些故事是根据电子行业的普遍情况和市场趋势构建的,可能与BCD Semi(Diodes)公司的实际发展情况存在一定的差异。如需了解该公司更详细的发展故事,建议查阅公司官方网站、相关新闻报道或行业分析报告等权威渠道获取更准确的信息。

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着市场需求的不断增长,Galaxy Microelectronics意识到需要不断迭代技术和扩大产能。

发展:2010年,公司成功研发出3D V-NAND技术,这一技术革命性地提高了存储密度和性能,降低了功耗。同时,公司开始在全球范围内建设新的生产基地,以满足日益增长的市场需求。通过技术迭代和产能扩张,Galaxy Microelectronics逐渐成为了全球闪存市场的领军企业之一。

Gould Fiber Optics公司的发展小趣事
可能是滤波电容老化、稳压电路故障或负载变化大。

问答坊 | AI 解惑

2.4G天线信号传输损耗

损耗是指在传输过程中因传输介质等因素引起的能力损失。…

查看全部问答>

二极管her307能不能用her308代替

望高手解答一下,在此先谢谢了!!!…

查看全部问答>

pdu usc-2 中文编码

我在linux下开发短信,使用开源的smstools来开发。 使用pdu模式时,发现对英语与数字可以很简单地实现。 但使用中文信息时,发现移动发过来的pdu报文解不正确。 如报文:测试 =“6D4B8BD5” 将两位一组转换为16进制数值,再转换为无符号字符。 ...…

查看全部问答>

寻求指引:不知如何问起的问题,关于和PC通讯方面(软硬驱动都需要)

(我一直做软件,虽然对Windows核心也有所了解,但却从未真正写过驱动,也未写过单片机软件,提的问题可能很不专业,请多包涵,多给点指引) 简单的说,可能这样:公司安排我项任务,改进一些旧的仪器。以前所有的仪器都是用RS232跟电脑连接的,我 ...…

查看全部问答>

各位大哥,你们好,我的朋友想学习plc但不知道用什么开发工具,希望你们能提供一些信息!谢谢

各位大哥,你们好,我的朋友想学习plc但不知道用什么开发工具,希望你们能提供一些信息!谢谢…

查看全部问答>

wince驱动开发的朋友

wince驱动开发,学了快半年了,想结交同样做wince驱动开发的朋友, QQ:181822723 …

查看全部问答>

想应聘嵌入式软件开发工程师,不知道看些什么书好

对嵌入式系统几乎知道很少知识     但是想应聘嵌入式软件开发工程师,不知道临时补充些什么知识,并且希望大家能推荐出书目来,谢谢 …

查看全部问答>

LM3S9997 J-LINK KEIL

LM3S9997 J-LINK KEIL 这几天做了个LM3S9997的最小系统。。。。 JTAG已经连接上了。。。读到的IDCODE是 0X4BA00477。。。然后用打开LM3S8662的一个LED例程。。。   有个错误。无法下载程序:error :flash DOWNLOAD FAILED - CORTEX-M3 好 ...…

查看全部问答>

STM8S常见问题大杂烩

最近再使用STM8S207RB进行开发,以下是自己使用cosmic时遇到的一些常见问题: 1.printf/sprintf入口参数必须是u16类型,否则打印结果不正确,很奇怪 2.u32位类型的判断if ((val%0x1000) == 0)此判断前必须强制转换,即     if ((u ...…

查看全部问答>

变压器制作知识

本帖最后由 paulhyde 于 2014-9-15 04:02 编辑 变压器制作大家一起学  …

查看全部问答>