在Keil5中新建stm32寄存器工程

发布者:自由思想最新更新时间:2017-11-01 来源: eefocus关键字:Keil5  stm32  寄存器工程 手机看文章 扫描二维码
随时随地手机看文章

直接拿来用配置好的工程文档顺手了,自己又重头配置了一次,温故而知新。

在桌面上新建一个文件夹,我取名叫example

打开MDK5,新建工程

在Keil5中新建stm32寄存器工程
在example里面新建user文件夹,将工程命名保存在此文件夹内

弹出对话框,选择芯片型号

在Keil5中新建stm32寄存器工程

添加启动代码

ST 公司提供了 3 个启动文件给我们,分别用于不同容量的 STM32 芯片,这三个文件是:

startup_stm32f10x_ld.s

startup_stm32f10x_md.s

startup_stm32f10x_hd.s

其中,ld.s 适用于小容量 产品;md.s 适用于中等容量产品;hd 适用于大容量产品;

这里的容量是指 FLASH 的大小.判断方法如下:

小容量:FLASH≤32K

中容量:64K≤FLASH≤128K

大容量:256K≤FLASH

在此我们选用的为zet6,大容量芯片,选择ld.s

我们把

startup_stm32f10x_hd.s 拷贝到刚刚新建的 USER 文件夹里面

我们找到 Target1Source Group1双击设置打开文件类型为 Asm Source

file选择 startup_stm32f10x_hd.s点击 Add

在Keil5中新建stm32寄存器工程

在 USER 文件夹下,startup_stm32f10x_hd.s(启动文件)和 test.uvprojx(MDK5 工程文件)

是我们必须用到的 2 个文件,然后 Listings 和 Objects 文件夹是 MDK5 自动生成的,如果打开

Listings 和 Objects 文件夹,就可以看到里面多了一些文件,这就是 MDK 编译过程产生的中间

文件,如果工程量大,产生的文件更多(多的可达 100 MB 以上!!)。

MDK5.14 已经默认将这些文件生成在了 Listings 和 Objects 文件夹里面,但是 MDK5.11A

及之前版本是不会自动生成这两个文件夹的,所有中间文件都是生成在工程同面目录下,也就

是 USER 文件夹下,这样会显得比较混乱。

这里,我们不用 MDK5 自己生成的这两个文件夹来存放中间文件,而是在 TEST 目录下新

建一个新的 OBJ 文件夹来存放这些中间文件。这样,USER 文件夹专门用来存放启动文件

(startup_stm32f10x_hd.s)、工程文件(test.uvprojx)等不可缺少的文件,而 OBJ 则用来存放这

些编译过程中产生的中间文件(包括.hex 文件也将存放在这个文件夹里面)。然后把 Listings 和

Objects 文件夹里面的东西全部移到 OBJ 文件夹下(当然要先关闭 MDK 软件)。

我没有管两个文件夹,直接更改设置将编译内容放到obj内,下面会讲到。

由于上面我们还没有任何代码在工程里面,这里我们把系统代码 COPY 过来(即 SYSTEM

文件夹,该文件夹由 ALIENTEK 提供,可以在光盘任何一个实例的工程目录下找到,不过不要

拷贝错了! 不要把库函数代码的系统文件夹拷贝到寄存器代码里面用,反之亦然!

在Keil5中新建stm32寄存器工程

在 Target 目录树上点击右键 Manage Project Items,弹出如图 3.2.12 所示对话框:

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

在上面对话框的中间栏,点新建(用红圈标出)按钮(也可以通过双击下面的空白处实现),

新建 USER 和 SYSTEM 两个组。然后点击 Add Files 按钮,把 SYSTEM 文件夹三个子文件夹里

面的:sys.c、usart.c、delay.c 加入到 SYSTEM 组中。注意:此时 USER 组下还是没有任何文件

在Keil5中新建stm32寄存器工程

点击 OK,退出该界面返回 IDE。这时,我们在 Target1 树下发现多了 2 个组名,就是我们

刚刚新建的 2 个组。

在Keil5中新建stm32寄存器工程

接着,我们新建一个 test.c 文件,并保存在 USER 文件夹下。然后双击 USER 组,会弹出

加载文件的对话框,此时我们在 USER 目录下选择 test.c 文件,加入到 USER 组下。得到如图

3.2.15 所示的界面:

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

这个界面,同我们刚输入完代码的时候一样,在第一行,会出现一个红色的“X”,把光标

放上面,会看到提示信息:fatal error:‘sys.h’ file not found,意思是找不到 sys.h 这个源文件。

这是 MDK4.7 以上才支持的动态语法检查功能,不需要编译,就可以实时检查出语法错误,方

便编写代码,非常实用的一个功能,后续会详细介绍。当然,我们也可以编译一下,MDK 会

报错,然后双击第一个错误即可定位到出错的地方

在Keil5中新建stm32寄存器工程

在Keil5中新建stm32寄存器工程

这里特别提醒大家:图中 1 处,我们必须根据所用 STM32F1 型号的容量,来输入相关宏

定义,对于 STM32F103 系列芯片,设置原则如下:

16KB≤FLASH≤32KB 选择:STM32F10X_LD

64KB≤FLASH≤128KB 选择:STM32F10X_MD

256KB≤FLASH≤512KB 选择:STM32F10X_HD

因为战舰板使用的是 STM32F103ZET6,FLASH 容量为 512KB,所以,这个位置我们 设置

为:STM32F10X_HD。

在 Include Paths 处(4 处),点击 5 处的按钮。在弹出的对话框中加入 SYSTEM 文件

夹下的 3 个文件夹名字,把这几个路径都加进去(此操作即加入编译器的头文件包含路径,后

面会经常用到)。如图 3.2.21 所示:

在Keil5中新建stm32寄存器工程

因为我们之前选择了生成 Hex 文件,所以在编译的时候,MDK 会自动生成 Hex 文件(图

中圈出部分),这个文件在 OBJ 文件夹里面,串口下载的时候,我们就是下载这个文件到

STM32F1 里面的,这个在后面的程序下载一节会介绍。

这里有的朋友编译后,可能会出现一个警告:warning:#1-D last line of file ends without a

newline。这个警告是在告诉我们,在某个 C 文件的最后,没有输入新行,我们只需要双击这个

警告,跳转到警告处,然后在后面输入多一个空行就好了。

至此,一个完整的 STM32F1 开发工程在 MDK5 下建立了。接下来我们就可以进行代码下

载和仿真调试了。


关键字:Keil5  stm32  寄存器工程 引用地址:在Keil5中新建stm32寄存器工程

上一篇:STM32的八种I/O口的用法
下一篇:STM32库函数中GPIO_Init的理解

推荐阅读最新更新时间:2024-03-16 15:42

STM32采集多路ADC到DMA的方法
最近在做一个手柄,用到了一个游戏摇杆,游戏摇杆的原理就是两个电位器,通过读取ADC的值计算位置,原理和触摸屏类似,那么就需要用到两路ADC了,但是我用的开发板是野火的,火哥给的例程只有单路ADC采集,查阅了相关资料解决了多路的问题,现在我把主要的代码贴在下面,以及一些注意的地方。 #define ADC1_DR_Address ((u32)0x40012400+0x4c) __IO uint16_t ADC_ConvertedValue ; /** * @brief 使能ADC1和DMA1的时钟,初始化PA.0&PA.1 * @param 无 * @retval 无 */ static void ADC1_G
[单片机]
STM32 JTAGSWD禁用导致无法烧写
由于 STM32 的引脚功能较多,在为了方便硬件的使用,常会使用复用,重映射的功能,这里 主要提及的是 SWD 和 JTAG 端口的引脚对应出现的问题。 GPIO引脚重映射时,当调用GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)函数时,则改变指定管脚的映射,完全禁用(JTAG+SW-DP)。 不但关闭了JTAG还关闭了SWD,这样一来,如果你使用该方式来烧写程序,那么你下一次将面临这无法烧写程序的后果,下面就介绍解决问题的办法: 按着板子上面的复位键不放,若没有按键,就用夹子短路复位电容,这样单片机将停止程序的运行; 这时候点击Keil的下载,下方的“Bu
[单片机]
如何在STM32中要实现数据通讯
在stm32中要实现数据通讯,首先要设置相关的寄存器,这里不做相关的介绍,直接说代码相关的能内容及相关函数对应的用法。 直接上代码。 1.串口通讯代码 usart.h #ifndef __USART_H #define __USART_H #include stdio.h #include sys.h #define USART_REC_LEN 200 //定义最大接收字节数 200 #define EN_USART3_RX 1 //使能(1)/禁止(0)串口1接收 extern u8 USART_RX_BUF ; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 ex
[单片机]
如何在<font color='red'>STM32</font>中要实现数据通讯
stm32使用过程中的注意事项
1.ADC采用值转换成具体的物理量值 ADC采样值在寄存器中是16位整形数据,要转换成具体的电压量,则必须进行换算。例如12位的转换精度,满量程的二进制为0000 1111 1111 1111,对应十进制数为1095,对应的电压为3.3V。所以计算公式为 电压 = (采样二进制值/1096)*3.3(V) 特别注意,转换电压为浮点类型,所以要将采样二进制值强制转换成浮点型。 uint16_t ADC_ConvertValue; float ADCtoVoltage; ADCtoVoltage = ((float)ADC_ConvertValue/4096)*3.3; 2.STM32F0x系列RCC配置
[单片机]
STM32编码器接口,以及应用编程
Ⅰ 关于编码器 编码器的种类有很多,什么增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电极开路输出等等。但不管什么类型的编码器,其目的都类似,得到转动的角度,角速度、位移等。 本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其A、B的相位知道编码器是正转,还是反转,还可以根据编码器参数得出旋转了多少角度等。 常见的增量式编码器A、B、Z三根线代表什么意思呢?使用过编码器的人不难理解,这里简单给初学者讲述一下: A、B两线提供相位相差90度的脉冲信号,用其来计算旋转的角度;Z线为过零点线,也就是说每转一转,经过某一点都会输出一个脉冲信号,主要用于“过零校正”,三
[单片机]
<font color='red'>STM32</font>编码器接口,以及应用编程
STM32学习日志——Alarm Clock V1.1
//V1.0 //oled display RTC and alarm clock; //key set alarm clock; //alarm clock interrupt; //V1.1 //standby and wake up; 上次VI.0版本写了篇文章,可能添加了百度云链接(代码),导致文章没发出来。本次的V1.1版本在原有的基础上,加了待机唤醒功能。 STM32有3种低功耗模式: 1)睡眠模式(CM3内核停止,外设仍在工作) 2)停机模式(所有时钟都停止) 3)待机模式(1.8V内核电源关闭) 3种低功耗模式 其中最低功耗的是待机模式,最低只需要2uA的电流。该模式是在 CM3 深睡眠模式时关闭电压调节
[单片机]
STM32控制HC-05蓝牙模块进行通信
一、HC-05蓝牙模块 1. 简介 HC-05主从一体蓝牙串口模块采用英国CSR公司BlueCore4系列的芯片,符合符合蓝牙2.0+EDR规范,可以同带同种蓝牙功能的电脑、蓝牙主机和手机等智能终端配对。 2. 主要参数 名称 说明 接口说明 TTL,兼容3.3V/5V单片机系统 波特率 4800、9600(默认)、19200、38400、57600、115200、230400、460800、921600、1382400 工作温度 -25℃~75℃ 工作电压 DC3.3V~5.0V 工作电流 配对中:30~40mA;配对完毕未通信:1~8mA;通信中:5~20mA 3. 引脚说明 模块通过6个2.54mm间距的排针与外部连接
[单片机]
<font color='red'>STM32</font>控制HC-05蓝牙模块进行通信
STM32中电源各引脚说明分析
一、数字电路中,电源符号 VCC:C=circuit,表示电路的意思,即接入电路的电压; VDD:D=Device,表示器件的意思,即器件的工作电压; VSS:S=Series,表示公共连接的意思,通常指电路公共接地端电压。 总结来说,VCC接电路的电源(±),VSS接电路的地,VDD接器件的电源引脚(±)。 二、STM32中电源各引脚说明 VDDA:A=Analog,表示模拟的意思,所以就是表示模拟器件的工作电压; VSSA:表示模拟器件的公共端地。 VBAT:给后备区域供电,维持包括RTC/BKP寄存器等在内的一些数据的保存。 100引脚的封装中: VREF-:A/D的参考,当需要使用时,必须绑定到VSSA(使得所有模拟器
[单片机]
<font color='red'>STM32</font>中电源各引脚说明分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved