新建工程——寄存器版本

新建工程存放的文件夹

建一个文件夹,文件夹名字为项目名,在里面再创建两个文件夹分别为Listing和Objects。
在这里插入图片描述

在这里插入图片描述
startup_stm32f40xx.s
启 动 文 件, 系 统 上 电 后 第 一 个 运 行 的 程 序, 由 汇 编 编 写, C 编 程 用 的 比 较 少, 可 暂时 不 管, 这 个 文 件 从 固 件 库 里 面 拷 贝 而 来, 由 官 方 提 供。 文 件 在 这 个 目 录: F4 固 件\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f40xx.s

它里边使用汇编语言写好了基本程序,当 STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文件称为启动文件。该文件使用的汇编指令是 Cortex-M4 内核支持的指令,可从《Cortex-M4TechnicalReference Manual》查到,也可参考《Cortex-M3 权威指南中文》, M3 跟 M4 大部分汇编指令相同。
startup_stm32f40xx.s 文件是由官方提供的,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件可以从 KEIL5 安装目录找到,也可以从 ST 库里面找到,找到该文件后把启动文件添加到工程里面即可。不同型号的芯片以及不同编译环境下使用的汇编文件是不一样的,但功能相同。
对于启动文件这部分我们主要总结它的功能,不详解讲解里面的代码,其功能如下:
• 初始化堆栈指针 SP;
• 初始化程序计数器指针 PC;
• 设置堆、栈的大小;
• 设置中断向量表的入口地址;
• 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没有外部 SRAM) ;
• 调用 SystemIni() 函数配置 STM32 的系统时钟。
• 设置 C 库的分支入口“__main”(最终用来调用 main 函数) ;

主要理解最后两点,在启动文件中有一段单片机复位后立即执行的程序,代码见代码清单: 点亮 LED-1 。
在这里插入图片描述

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

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

在Keil5新建工程并存放在上一步所建的文件夹中

1. 新建工程
在这里插入图片描述
选择使用的芯片型号在这里插入图片描述

这个是在线添加库文件,这里我们创建的是寄存器版本,所以不添加库文件,所以直接关闭当前窗口
在这里插入图片描述

2. 添加文件
我们需要把之前存在文件夹里的三个文件添加到项目当中,才算真正使用到了那3个文件。
双击项目组文件夹就会出现添加文件的路径,具体见图往组文件夹中添加文件 ,然后选择文件 Add 即可。
在这里插入图片描述

配置魔术棒选项卡

这一步的配置工作很重要,很多人串口用不了 printf 函数,编译有问题,下载有问题,都是这个步骤的配置出了错。
Target 中选中微库“Use MicroLib”,具体见图添加微库 。选择微库的目的是为了在日后编写串口驱动的时候可以使用 printf 函数。而且有些应用中如果用了 STM32 的浮点运算单元 FPU,一定要同时开微库,不然有时会出现各种奇怪的现象。 FPU 的开关选项在微库配置选项下方的“UseSinglePrecision”中,默认是开的。
在这里插入图片描述

把一些编译产生的文件定位输出到我们自己创建的Listing和Object文件夹中,不然项目会自动在项目文件夹中另外新创建两个文件夹分别存储相应的文件
Output 选项卡中把输出文件夹定位到我们工程目录下的 Objects 文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上,具体见图配置 Output 选项卡 。

在这里插入图片描述

在 Listing 选项卡中把输出文件夹定位到我们工程目录下的 Listings 文件夹,具体见图配置Listing 选项卡 。
在这里插入图片描述

接下来就是配置下载,然后敲代码编译下载即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值