当前位置:文档之家› STM32F4 的FPU 的配置

STM32F4 的FPU 的配置

STM32F4 的FPU 的配置
STM32F4 的FPU 的配置

STM32F4 的FPU 的配置

编译环境为EW ARM-6601

首先看下面一段代码:来自core_cm4.h文件

/*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */

#if defined ( __CC_ARM )

#if defined __TARGET_FPU_VFP

#if (__FPU_PRESENT == 1)

#define __FPU_USED 1

#else

#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"

#define __FPU_USED 0

#endif

#else

#define __FPU_USED 0

#endif

#elif defined ( __ICCARM__ ) //IAR编译工具的开关

#if defined __ARMVFP__ //要求编译出的文件使用FPU功能

#if (__FPU_PRESENT == 1) //检查是否有FPU功能

#define __FPU_USED 1

#else

#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"

#define __FPU_USED 0

#endif

#else

#define __FPU_USED 0

#endif

#elif defined ( __GNUC__ )

#if defined (__VFP_FP__) && !defined(__SOFTFP__)

#if (__FPU_PRESENT == 1)

#define __FPU_USED 1

#else

#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"

#define __FPU_USED 0

#endif

#else

#define __FPU_USED 0

#endif

#elif defined ( __TASKING__ )

/* add preprocessor checks to define __FPU_USED */

#define __FPU_USED 0

#endif

这里针对各种工具链设置了相应的条件编译选项,这里只说IAR的,其他工具链的用户请参考本文自行修改.

最上层的开关是__CC_ARM 这个宏,很明显这个开关是针对MDK工具的,同理IAR工具的开关就叫做__ICCARM__ 了;

然后一个开关就是__ARMVFP__ 了,这个开关要求编译出的文件使用FPU功能,但是m4的FPU并不是必装设备,某些厂家可能会不装这个东西,所以需要检查是否有FPU,即__FPU_PRESENT这个开关。在core_cm4.h中有这样的代码:

#ifndef __FPU_PRESENT

#define __FPU_PRESENT0

#warning "__FPU_PRESENT not defined in device header file; using default!"

#endif

#ifndef __MPU_PRESENT

#define __MPU_PRESENT 0

#warning "__MPU_PRESENT not defined in device header file; using default!"

#endif

由上述代码可以知道CMSIS默认的定义是没有FPU的,所以需要我们手动添加FPU存在的定义

#define __FPU_PRESENT 1

这样FPU存在与否的检查就通过了,所以后面就自动定义了__FPU_USED 这一开关。因此就有了下面的定义

#define __FPU_USED 1

因为m4增加了FPU(单精度浮点数),所以很多数学函数都应该用m4专用的,优化过的,而不是之前的通用函数。

打开arm_math.h文件

* Each library project have differant pre-processor macros.

*

* ARM_MATH_CMx:

* Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target,

* ARM_MATH_CM3 for building library on Cortex-M3 target

* and ARM_MATH_CM0 for building library on cortex-M0 target.

*

* ARM_MATH_BIG_ENDIAN:

* Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.

*

* ARM_MATH_MATRIX_CHECK:

* Define macro for checking on the input and output sizes of matrices

*

* ARM_MATH_ROUNDING:

* Define macro for rounding on support functions

*

* __FPU_PRESENT:

* Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries

以上代码说明:要用ARM的数学函数得定义ARM_MATH_CMx即得有下面的定义

#define ARM_MATH_CM4

如果你想使用STM32F4的FPU功能而又不想管Project中的设置那么使用下面的代码:

#define __FPU_PRESENT 1 // FPU开关

#ifndef __ARMVFP__ //要求在生成的代码中使用FPU #define __ARMVFP__

#endif

#ifndef ARM_MATH_CM4 //要求使用m4的数学库函数

#define ARM_MATH_CM4

#endif

也可以在软件中开FPU功能IAR的设置如下:

MDK中的设置如下:

对于Cortex-M0或者M3处理器类型,由于没有FPU因此无法直接进行浮点运算,只能将浮点数进行Q规格化(q7、q15或Q31)处理,如开平方运算:M0/M3只能通过迭代法(标准数学函数库)计算,而M4直接调用VSQRT 指令完成。

DSP_Lib的文件结构

事实上arm_math.h文件中的定义就为源文件组使用的。因此在将源文件组编译为库时,在应用工程中添加这个库和arm_math.h即可访问所有DSP库功能。也可以根据需要只添加arm_math.h和需要的源文件,以缩短程序长度。

(1)BasicMathFunctions源文件组

提供浮点数的各种基本运算函数,如加减乘除等运算。对于M0/M3只能用Q运算,即文件夹下以_q7、_q15和_q31结尾的文件;而M4能直接硬件浮点计算,属于文件夹下以_f32结尾的文件。

(2)CommonTables源文件组

arm_common_tables.c文件提供位翻转或相关参数表。

(3)ComplexMathFunctions源文件组

复数数学功能,如向量处理,求模运算的。

(4)ControllerFunctions源文件组

控制功能,主要为PID控制函数。arm_sin_cos_f32/-q31.c函数提供360点正余弦函数表和任意角度的正余弦函数值计算功能。

(5)FastMathFunctions源文件组

快速数学功能函数,提供256点正余弦函数表和任意角度的正余弦函数值计算功能,和Q值开平方运算:

Arm_cos_f32/_q15/_q31.c:提供256点余弦函数表和任意角度余弦值计算功能。

Arm_sin_f32/_q15/_q31.c:提供256点正弦函数表和任意角度正弦值计算功能。

Arm_sqrt_q15/q31.c :提供迭代法计算平方根的函数。

对于M4的平方根运算,通过执行VSQRT指令完成。

(6)FilteringFunctions源文件组

滤波函数功能,主要为FIR和LMS (最小均方根)滤波函数。

(7)MatrixFunctions源文件组

矩阵处理函数。

(8)StatisticsFunctions源文件组

统计功能函数,如求平均值、计算RMS 、计算方差/ 标准差等。

(9)SupportFunctions源文件组

支持功能函数,如数据拷贝,Q格式和浮点格式相互转换,Q任意格式相互转换。

(10)TransformFunctions源文件组

变换功能,包括复数FFT (CFFT)/ 复数FFT逆运算(CIFFT)、实数FFT (RFFT)/ 实数FFT逆运算(RIFFT )、和DCT (离散余弦变换)和配套的初始化函数。

在IAR的环境下运行一个简单的浮点运算:

主函数如下:

通过IAR软件Terminal I/O 窗口观察的输出结果

经验证无误。

STMv3.5固件库在keil4中建立工程的具体过程

首先建立一个文件夹用来装工程(文件夹名自定,笔者建立的文件名为“ggyy_Proj”文件夹)。 在“ggyy_Proj”文件夹下,建立两个文件夹“User”和“Project”。 将库文件STM32F10x_StdPeriph_Lib_V3.5.0下的“Libraries”文件夹全部拷入“ggyy_Proj”文件夹下。 将“ggyy_Proj”文件夹下的“Project”文件夹下建立三个文件夹“List”、“Obj”和“Pro”。其中Pro用来存放工程。 将“ggyy_Proj”文件夹下的“User”文件夹下建立两个文件夹“inc”和“src”。

然后将需要用到的文件拷贝到相应的文件夹中: 将以下5个.h文件考进ggyy_Proj下User下的inc文件夹中: ···ggyy_Proj\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h ···ggyy_Proj\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h \stm32f10x.h 固件库中: ·STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h \stm32f10x_it.h 将以下2个.c文件考进ggyy_Proj下User下的src文件夹中: 固件库中: ···STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c \main.c 现在打开keil,并点击在Project菜单栏下的New uVision Project…来新建工程。

GD32 Keil5工程创建步骤

第一步:安装DFP软件包 (1)按照Keil uVision5, 步骤略。我的keil版本如下: (2)下载GD3210X的DFP软件包。 下载地址: 插件包下载完成后,有3个文件。 (3)安装DFP软件包。双击.pack文件进行安装,如下图所示:

点击next,将包文件复制到上面的路径位置。如下图: GigaDevice文件夹就是安装好的软件包。 第二步:创建Keil工程 (1)通常要新建3个文件夹。如下图所示: (2)打开keil5,新建project.将工程文件放到Mdk-Arm目录下面。弹出器件选择界面:在Device下拉框,选择Software Packs,选择GD32F103RB,点击OK

接着弹出Mannage RTM界面,选中CMSIS的CORE和设备外围库文件,如下所示: 点击OK,CMSIS工具自动添加库文件到./Mdk-Arm/RTE目录中,工程目录如下所示:

(3)在Keil5中,打开文件管理界面: 依次创建文件组:Application/Utilites/Documents (4)将main.c gd32f10x_it.c sysstick.c相关文件拷贝到userr文件夹,并添加到Application 文件组中。 (5)设置编译的头文件目录:将DFP包的CMSIS相关头文件路径都加进去,将 RTE_Components.h配置头文件路径加进去。如下图所示:

Main文件内容如下: 注意: (1)此项目是用MDK CMSIS配置工具建立的,CMSIS配置工具会自动将选用的标准库源码的C文件从Kiel5的DFP包标准库目录下拷贝到当前的项目中:./Mdk-Arm/RTE路径下,但是没有将头文件拷贝过来。所以此项目的编译依赖实际的Keil5安装环境:没有安装DFP包或头文件目录跟工程设置的包含路径不对应的话,就会出现编译失败。也就是说,将一个项目拷贝到另一台电脑时,编译可能失败。 (2)main.c/systick.c和gd32f10x_it.c是从例程中拷贝过来的. (3)头文件的前面出现感叹号,表示没有正确的引用。 (4)也可以不用MDK CMSIS配置工具,手动拷贝相应的CMSIS库文件,进入DFP软件包目录下,将GD32F10x_DFP文件夹整体拷贝到过来。再将 C:\Keil_v5\ARM\PACK\ARM\CMSIS\4.5.0\CMSIS目录下的Include目录拷贝过来。再将启动文件也拷贝过来,(注:位置应该是GD32F10x_DFP\2.0.0\Device\Source\ARM, 此处我选的MCU 是GD32F103RB,所以用md.s),将其拷贝到过来。手动拷贝库文件建立工程的方法跟用CMSIS 配置工具建立工程的方法大同小异,只是工程里面添加了标准库文件之后,记得要手动配置对应的头文件。而借助CMSIS工具,则会自动通过更改RTE_Components.h文件实现。

keil编程步骤

-、双击打开keil编程软件,图标如下图所示 二、新建工程:在“菜单栏”-“Project”-“New”-“μvision Project”-输入要保存的工程名。

根据单片机的型号选择CPU,然后点击“确定”。 选择“否”。 三、新建文件 点击新建文件。 四、保存文件 注意:文件名要带扩展名。用C语言编写的程序,扩展名为“.c”;用汇编语言编写的程序,扩展名为“.asm”。点击“保存”。

五、添加文件到工程 在工程管理器中,用鼠标右键点击“Source Group 1”,选择“Add File to Group ‘Source Groutp 1’”,如果要添加的文件是汇编文件,文件类型选择如下图所示的类型;如果是C语言文件,文件类型选择“*.c”。双击要添加文件,然后点击”close”。

在工程管理器中,可以看到刚刚添加的文件 六、编写程序 七、编译当前文件 点击按钮 八、修改错误 根据输出框里的提示信息修改程序中的错误 九、生成烧录文件 在工程管理器中,鼠标右键单击,按下图操作。

将“create HEX file”前复选框前选上。“02”是文件名,可以改成其他的名,文件名前“select folder for objects”是此文件要保存的位置,默认情况下和当前工程保存在同一目录下,如果要保存在其他位置,可以点击此外进行修改。 点击编译工程图标,在输出框里会有提示信息 ,说明生成了hex文件。注意:必须在编译当前 文件没有错误的情况下才能生成hex文件。 十、将程序下载到单片机

双击烧录软件图标,打开软件。按下图所示设置“编程器及接口”、“编程”。“选择芯片”:根据你当前的单片机选择型号。 点击图标, 找到生成的HEX文件打开。点击图标,将程序烧录到单片机。

ARM的KEIL工程建立及编译过程

ARM 的KEIL 工程建立及编译过程 精简: 1)添加:Ext_RAM.ini 和RuninRAM.sct; 2)选中 ,去掉 3)注意LOAD 1.axf INCREMENTAL // Download program 这个名要与工程名保持一致。 第一步:新建工程 点击Project-new uvision Project 新建工程,注意工程名没有后缀。 点是,自动生成启动代码,否,要自己写启动代码。 第二步:自己写c 程序(用户程序): 点击File-New 新建文件:注意文件名尾缀为.c。 U n R e g i s t e r e d

第三步:添加C 文件 选中Source Group1点击右键,进行文件添加。 第四步:COPY 三个文件:(第一个是用户程序,自己写就不需要添加,最后一个如果自动生成启动代码也不需要添加)Ext_RAM.ini 和RuninRAM.sct 必须添加。 Ext_RAM.ini :J-LINK 初始化脚本,必须添加。 代码执行前必须要初始化CPU 内部的一些寄存器。该文件就是做初始化工作,给J-LINK 用。J-LINK 通过读取该配置文件,初始化目标板主CPU 相关的寄存器。 RuninRAM.sct:代码编译时需要的链接文件,其主要作用就是组织代码的到该脚本指定的地址。 S3C2440A.s:初始化代码(启动代码) 小知识点:RuninRAM.sct:代码分析 U n R e g i s t e r e d

; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* ; Run in RAM LR_ROM1 0x30000000 { ; load region 程序运行起始地址。内存起始地址固定0x30000000 ER_ROM1 0x30000000 0x0040000 { // 0100 ; load address = execution address 程序的下载地址,及程序容量 *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_RAM1 0x30040000 0x0040000 { ; RW data RW 段起始地址 .ANY (+RW +ZI) } RW_IRAM1 0x40000000 0x00001000 { //芯片内部4k sram 空间,固定式0x40000000开始。 .ANY (+RW +ZI) } } 第五步:配置 U n R e g i s t e r e d

第2课 keil软件及工程文件的建立

第2 课keil 软件及工程文件的建立 单片机系统设计主要包括硬件设计和软件设计,对于单片机初者来说主要在于软件的学习,也就是程序设计,等大家程序这块掌握得差不多了,再去结合具体的项目学习做硬件,最终掌握单片机系统设计的方法。而在进行软件学习的时候需要用到单片机实验板进行实验验证,实验板建议直接购买,当然如果电子技术基础好的话,自己做板也是可以的。这次教程开发程序所用到的软件为keil uVision2,该软件大家可以到实验室的下载中心进行下载;硬件实验平台主要采用我们实验室自行设计的实验板,有需要的请直接与我们联系。下面分别介绍这keil uVision2 和实验板的使用方法,在程序编写完成后需把程序烧写到单片机中,我们是用ISP 在线下载工具,这里一并进行介绍。为了便于大家学习,这里我们写一个以1602 液晶为显示器件的可显示时、分、秒的电子时钟 程序为例介绍整体程序从编辑、编译到下载的全过程。(具休程序已事先写好 并经正常调试无误,后面课程会具体介绍,这里暂不作讲解)在正式的写程序之前,需进行keil uVision2 软件的安装和实验板驱动程序的安装,相关的软件及驱动程序请大家直接在实验室网站下载中心进行下载,这里给出下载地址。keil uVision2 软件件及安装方法、实验板驱动程序及安装方法。安装安成后,即可按下面的步骤进行。1、KEIL 软件的使用及工程文件的建立51 单片机程 序设计所用到的开发软件主要是keil uVision,它是由德国Keil Software 公司开发的,2005 年Keil 公司被ARM 公司收购,并于2009 年发布了keil uVision4,这个版本的软件支持ARM 系列的芯片,如现目前流行的STM32 等芯片,我们这里使用的是uVision2 版本。(1)、打开KEIL 软件双击keil 快捷方式图标(软件安装好后,一般在桌面上会有快捷方式,双击即可),出现启动界面如 图1,紧接着出现编辑界面如图2。图1启动keil 软件时的界面图2进入

keil5如何建工程

北京科技大学 Keil5工程创建及程序 下载 创建工程;下载程序 北京科技大学MEI团队 作者:解乃颖联系方式:ny_xie@https://www.doczj.com/doc/8c11138429.html,日期:2014-08-20

目录内容 创建工程: __________________________________________________________________ 步骤一:创建文件夹和相应的库文件________________________________________ 1步骤二:创建工程文件__________________________________________________ 1步骤三:添加库函数____________________________________________________ 3步骤四:选择输出路径__________________________________________________ 7步骤五:添加路径和定义_________________________________________________ 9 程序下载: ________________________________________________________________ 联系信息 __________________________________________________________________ 12

创建工程: 步骤一:创建文件夹和相应的库文件 新建工程文件夹目录如下 其中,文件夹Prj 包含以下文件夹: 之后添加常用文件,如main.c bsp.c function.c Global.h Config.h 等 步骤二:创建工程文件 打开keil5,创建新工程。 “需要向您的读者 指出某些极其重要的内容吗?请使用边栏突出该内容。”

MDK5新建工程步骤

首先,打开MDK(以下将MDK5简称为MDK)软件。然后点击Project New uVision Project 桌面新建一个TEST的文件夹,然后在TEST 文件夹里面新建USER文件夹,将工程名字设为test,保存在这个USER文件夹里面。 STM32F103 所使用的STM32 型号为STM32F103ZET6(如果使用的是其他系列的芯片,选择相应的型号就可以了)。

点击OK,MDK会弹出Manage Run-Time Environment对话框,直接点击Cancel,即可。此时我们只是建立了一个框架结构。 还需要添加启动代码,以及.c 文件等这代码主要作用如下: 1、堆栈(SP)的初始化; 2、初始化程序计数器(PC); 3、设置向量表异常事件的入口地址; 4、调用main函数。 ST公司提供了3个启动文件给我们,分别用于不同容量的STM32芯片,这三个文件是: startup_stm32f10x_ld.s startup_stm32f10x_md.s startup_stm32f10x_hd.s 其中,ld.s适用于小容量产品;md.s适用于中等容量产品;hd适用于大容量产品; 这里我们把startup_stm32f10x_hd.s 拷贝到刚刚新建的USER 文件夹里面。 我们找到Target1→Source Group1→双击→设置打开文件类型为Asm Source file→选择startup_stm32f10x_hd.s→点击Add,

在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 文件夹来存放这些中间文件。 然后在Target目录树上点击右键 Manage Project Items,在上面对话框的中间栏,点新建(用红圈标出)按钮(也可以通过双击下面的空白处实现),新建USER和SYSTEM两个组。然后点击Add Files按钮,把SYSTEM文件夹三个子文件夹里 面的:sys.c、usart.c、delay.c加入到SYSTEM组中。 接着,我们新建一个test.c文件,并保存在USER文件夹下。然后双击USER组,会弹出加载文件的对话框,此时我们在USER目录下选择test.c文件,加入到USER组下。

keil创建arm工程操作步骤

Keil创建ARM工程操作步骤 1、双击keil uvision4,打开keil开发环境 2、选择project—> new uvision project 创建新项目,在创建新项目时,最好先新建一个文件夹,把新项目创建在新文件夹里,这样项目所生产的文件都在该文件夹下,便于项目的管理。 3、在弹出的对话框中选择芯片类型 芯片选择好后,点击OK退出。这时弹出一个对话框,询问是否添加启动代码到新项目中,选择“是”。 4、选择file-->new,新建文件。在文件输入主函数程序代码。输入完

后,点击保存,假设命名为main.c 。注意保存路径,要和项目在同一文件夹下。 5、右键点击source group1,选择add file to source group1. 添加mail.c文件。若项目中包含文件较多,均可采用该方法添加文件。 6、配置相关选项。点击红框的target options 弹出

选择output标签 然后点击“select folder objects”,弹出一对话框,在这里新建一个文

件夹,命名为“obj”,然后双击进入obj文件夹。然后点击ok退出。本步骤的目的是将生产的目标文件都放在obj文件夹里。 7、选择listing标签,点击select folder for listings ,新建文件夹list,并双击进入该文件夹,然后点击ok直接退出。 8、选择linker标签,勾掉use memory layout from target dialog,选择Scaterfile 后面的第一个按钮,选择文件。然后点击编辑。

Keil5新建工程步骤(图文)

新建工程 第一步:创建一个工程目录 第二步:在刚才新建的文件夹中再新建两个文件夹 System---用于存放stm32 系统文件 User --用于存放我们自己编写的文件 第三步:在user文件夹中还要建两个文件夹src和inc分别用来存放我们自己写的C文件和头文件.h文件 第四步:找出系统文件 1.内核文件:把内核文件拷贝到system文件夹中 M3资料\STM32 固件库使用参考资料 \STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3 \CoreSupport 2.stm32 时钟初始化文件 M3资料\STM32 固件库使用参考资料 \STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\De viceSupport\ST\STM32F10x 3.启动文件—用于初始化芯片环境 hd— md— ld— 开发板用的是高容量的STM32,所以这里选择hd M3资料\STM32 固件库使用参考资料

\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM 3\DeviceSupport\ST\STM32F10x\startup\arm 完成后的system文件夹 第五步:新建keil工程 1.打开 2 2.选择保存的路径—第一步建的文件夹

STM32F4(KEIL5函数版)工程模板建立方法

1.下载对应型号的STM32固件库 2.建立好对应的文件夹 2.1 建立文件夹 工程说明 主要存放stm32f429的官方固件库 存放编译产生的调试信息,hex文件,预览信息,封装库扥文件 主要存放内核文件和启动文件 存放main函数,中断函数,配置函数,429系统函数 2.2 在文件夹里放对应的固件库文件 1. STM32F429I-Discovery_FW_V1.0.0\Libraries\STM32F4xx_StdPeriph_Driv er。将inc,src文件夹放入。 2. STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4 xx\Source\Templates\arm找到startup_stm32f429_439xx.s 放入 STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Include 找到core_cm4,core_cm4_simd,core_cmFunc,core_cmInstr放入

3. STM32F429I-Discovery_FW_V1.0.0\Projects\Template将里面所有的文本文件放入user文件夹。 STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4 xx\Include将stm32f4xx.h和system_stm32f4xx.h放入user文件夹。 3.打开Keil建立工程模板 一

找到对应的STM32芯片型号 二

实验一keil软件的使用及简单程序的调试方法

实验一 Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下: 几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程

名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示 单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。

keil 工程模版建立

本来之前打算是讲课的时候开始讲的,各位现在在尝试了,所以就截图做了一个演示。当然,如果之前建立好工程模版且可以使用的话,不需要按照这个再重复一次,毕竟是无意义的操作。 首先是我个人的看法。就基础的讲,对于一个stm32工程,需要整理成以下模块:1)官方提供的库——这个肯定必须具备,就像C语言里面的#include”stdio.h”等等一样,我们需要一个能够对stm32固件进行操作的库。 所以把这个库作为一个模块放置。 2)硬件初始化——大家以后学习了单片机或者stm32或者其他的嵌入式芯片之后自然会知道什么是硬件的初始化,现在我们简单理解成“想要修一座小区的时候,拿到在小区内修建一座房子的许可证。 底层驱动函数——这个可以简单理解成“需要修一座小区的时候,封装一个在小区内修建一座房子的函数”。 因为硬件初始化和底层驱动函数息息相关,且意义相似,所以把硬件初始化和底层驱动函数作为一个模块放置。 3)软件驱动——这里的软件驱动无法很好的解释。可以说是“修建小区内房子的时候需要用到的工具”吧。(其实并不是必须的,但是是一个好的小区所必须的)本科同学中很多人都没有这一板块的概念,这里大概可以这样想:当我们传输数据的时候,为了更稳定,更面向对象化编程,搭建了一个循环链表或者消息队列,那么这种独立于硬件的逻辑、算法、规划工具可以视为软件上的驱动。(比如FreeRTOS、ucOS等嵌入式操作系统,也可以视为软件驱动。 所以把软件驱动作为一个模块放置。 4)APP应用程序——上层的代码实现。这个可以简单理解成“当我们拿到在小区内修建一座房子的许可证,封装好在小区内修建一座房子的函数后。安排如何修建这个小区”。当然,如果你有能够安排、规划整个修建过程的工具(软件驱动),那这个工程会更漂亮。 所以把APP应用程序作为一个模块放置。 以上是工程的大致规划,把工程分为了四个模块(个人见解,仅供参考)。 我所示例的工程建立也是如此。下面开始截图说明:

用KEIL5新建工程模版

第1章用KEIL5新建工程模版 版本说明:MDK5.15 1.1新建工程 1.1.1新建本地工程文件夹 为了工程目录更加清晰,我们在本地电脑上新建6个文件夹,具体如下: 表格1工程目录文件夹清单 名称作用 Doc用来放对程序说明的文件,由写程序的人添加 Libraries存放是库文件 Listing存放编译器编译时候产生的c/汇编/链接的列表清单Output存放编译产生的调试信息、hex文件、预览信息、封装库等Project用来存放工程 User用户编写的驱动文件 图10工程文件夹目录 在本地新建好文件夹后,把准备好的库文件添加到相应的文件夹下: 表格2工程目录文件夹内容清单 名称作用 Doc readme.txt Libraries CMSIS:里面放着跟CM3内核有关的库文件

FWlib:STM32外设库文件 Listing暂时为空 Output暂时为空 Project暂时为空 User stm32f10x_conf.h:用来配置库的头文件 stm32f10x_it.h stm32f10x_it.c:中断相关的函数都在这个文件编写,暂时为空 main.c:main函数文件 1.1.2新建工程 打开KEIL5,新建一个工程,工程名根据喜好命名,我这里取LED-LIB,保存在Project\RVMDK(uv4)文件夹下。 1.选择CPU型号 这个根据你开发板使用的CPU具体的型号来选择,MINI选STM32F103VE,ISO选STM32F103ZE。如果这里没有出现你想要的CPU型号,或者一个型号都没有,那么肯定是你的KEIL5没有添加device库,KEI5不像KEIL4那样自带了很多MCU的型号,KEIL5需要自己添加,关于如何添加请参考《如何安装KEIL5》这一章。

基于STM32固件库V3.5建立keil工程详细步骤

建立基于STM32固件库的工程模版(ALIENTEK) 这是一个独立的建立工程的资料,如果您手头没有我们ALIENTEK STM32开发板的源码和资料,请您到我们ALIENTEK官方技术论坛:https://www.doczj.com/doc/8c11138429.html,下载, 下载地址为:https://www.doczj.com/doc/8c11138429.html,/posts/list/565.htm所有资料均免费提供。 初学者搭建开发环境建立工程模版大约需要2-3个小时,请耐心按照手册的讲解来。一.需要准备的资料: 1. STM32F10x_StdPeriph_Lib_V3.5.0 (这是ST官网下载的固件库完整版) 我们官方论坛下载地址:https://www.doczj.com/doc/8c11138429.html,/posts/list/6054.htm 2. MDK 3.8a (我们的板子的开发环境目前是使用这个版本) 二.安装MDK3.8a (Keil):这个在我们不完全手册中已经讲解,这里重复一次。 1.找到MDK的安装文件并点击安装: 文件在我们光盘的目录: ALIENTEK 开发板资料\软件\MDK3.80A 2.点击之后出现界面,选择Next 3.选择”I Agree…Licence agreement”同意协议:

4.选择安装目录,这里用户自行选择安装的目录后,点击Next即可: 5.随便输入邮箱之类的信息即可,点击Next开始安装:

6.按图配置,然后点击Finish,左面会出现keil快捷图标。

三.注册License(破解,如果不破解只能支持32K的代码) 步骤简介: 在MDK针对每台机会有一个CID,copy这个CID到注册机处生成License Key,然后再将这个License Key添加到MDK里面去注册。 1.右键点击左面的MDK快捷方式,选择“以管理员身份运行”,因为注册license需要管理员权限。然后会打开MDK,然后默认会有一个名字叫“LPC2129 simulator”的Project,暂时我们可以不用理会。 2.点击:File->License Management,弹出一个License Management 界面,copy界面中的(CID):

使用STM32固件库建立keil工程详细步骤(精)

建立基于STM32固件库的工程模版(ALIENTEK 这是一个独立的建立工程的资料,如果您手头没有我们ALIENTEK STM32开发板的源码和资料,请您到我们ALIENTEK 官方技术论坛:https://www.doczj.com/doc/8c11138429.html,下载, 下载地址为:https://www.doczj.com/doc/8c11138429.html,/posts/list/565.htm所有资料均免费提供。 初学者搭建开发环境建立工程模版大约需要2-3个小时,请耐心按照手册的讲解来。 一.需要准备的资料: 1. STM32F10x_StdPeriph_Lib_V3.5.0(这是ST 官网下载的固件库完整版 我们官方论坛下载地址:https://www.doczj.com/doc/8c11138429.html,/posts/list/6054.htm 2. MDK 3.8a (我们的板子的开发环境目前是使用这个版本 二.安装MDK3.8a (Keil:这个在我们不完全手册中已经讲解,这里重复一次。1. 找到MDK 的安装文件并点击安装: 文件在我们光盘的目录:ALIENTEK 开发板资料\软件 \MDK3.80A 2. 点击之后出现界面,选择Next

3. 选择”IAgree…Licenceagreement”同意协议: 4. 选择安装目录,这里用户自行选择安装的目录后,点击Next 即可:

4.随便输入邮箱之类的信息即可,点击Next 开始安装: 5.按图配置,然后点击Finish,左面会出现keil 快捷图标。

三.注册License(破解,如果不破解只能支持32K 的代码 步骤简介: 在MDK 针对每台机会有一个CID,copy这个CID 到注册机处生成License Key,然后再将这个License Key 添加到MDK 里面去注册。 1.右键点击左面的MDK 快捷方式,选择“以管理员身份运行”,因为注册license 需要管理员权限。然后会打开MDK,然后默认会有一个名字叫 “LPC2129simulator”的Project,暂时我们可以不用理会。 2.点击:File->LicenseManagement,弹出一个 License Management 界面,copy界面中的(CID:

Keil-uVision4-第一个工程的建立和环境设置

Keil uVision4 第一个工程的建立和环境设置(02)分类: ARM_DSP_MCU_BUS_OTHER 发布: mckeeqin 浏览: 242日期: 2010年6月19日 建立一个工程,效果是让NUC100 (48脚的芯片) PC3口LED闪烁, 第1步:点击Project --->New uVision Projiect 第2步:输入工程名字:test (最好事先建立一个工程文件夹) 第3步:选择对应公司的芯片

第4步:点击“是”,添加启动代码段 第5步:新建一个文档,输入如下代码(注 main的返回值是int型),并保存文件为test1.c 到工程文件夹下,然后添加到本工程下,效果如下图 第6步:把厂家提供的基本驱动程序添加到工程中,下面四个文件夹一起复制到test工程文件夹下,并在test工程文件夹下,新建两个文件夹分别命名为list和obj(分别用于放置编译过程中产生的文件,这样工程编译后,工程文件夹下才不会显的乱七八糟),效果如下面第二个图所示。

第7步:为工程建立2个相应的文件夹,并分别命名为“nuc”和“gpio”用于放置相应的库文件,然后把工程名Target 1重新命名为“test”, 源文件夹命名为“main”。(命名的方法是选中文件夹,按下F2键) 效果如下图第二张

第8步:分别右击“nuc”文件夹和“gpio”文件夹,选择“Add Files to Group...”把相应的库文件添加到相应文件夹下面,效果如下图第二张所示,(这里添加的仅仅是.c文件,至于.h文件在编译时自动添加其中),好,完成此步后,整个工程文件建立完毕,下面几步就是设置编译环境的参数了。

建立keil工程步骤

1、新建立工程 双击启动桌面的Keil uVision2,进入下面的界面 1、1点击“Project->New Project…”菜单,出现对话框,要求选择保存工程的 文件夹并给将要建立的工程起一个名字,这里选择文件夹ex1_1,并起名为ex1_1;(可用其他的)不需要输入扩展名。输入之后点击保存。这个时候就将刚才保存到文件夹ex1_1里。

1、2点击上面的保存之后跳出如下的对话框,这个时候需要我们对我们的单片机的型号进行选择,我们就选Atmel的AT89C51.选择之后点击“确定”。

1、3 接上一步点击“确定之后”,跳出如下的对话框。这个时候是问我们是否添加那个仿真配置文件的,我们就选择“否(N )”。

好了。我们的工程已经建立成功。如下图 2、1 有了工程之后,我们需要给我们的工程写程序。 那就点击“File New…”在工程管理器的右侧打开一个新的文件输入窗口Text1,在这个窗口里输入例1-1 中的源程序, 输入例1_1的程序如下:

2.2输入完毕之后,选择“File Save”,给这个文件取名保存,取名字的时候必须要加上扩展名,一般C 语言程序均以“.C”为扩展名,这里将其命名为ex1_1.c,保存完毕后可以将该文件关闭。

好了,到这里。我们就已经建立好c语言的文件了。 3 建立好工程、建立好c语言的文件之后,我们就需要将这个c语言的文件添加到我们的工程来。 3.1点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图所示,选中其中的“Add file to Group”Source Group1”,出现一个对话框,要求寻找源文件ex1_1.c。

keil MDK建立工程步骤方法

KEIL工程建立步骤 KEIL MDK开发工具源自德国Keil 公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。KEIL MDK集成了业内最领先的技术,包括μVision4集成开发环境与RealView编译器。支持ARM7、ARM9和最新的Cortex-M3/M1/M0 内核处理器,自动配置启动代码,集成Flash 烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。KEIL MDK出众的价格优势和功能优势,已经成为ARM软件开发工具的标准,目前,KEIL MDK在国内ARM开发工具市场已经达到90%的占有率。 使用MDK前当然要先把KEIL MDK安装好。读者首先要从 https://www.doczj.com/doc/8c11138429.html,/下载到最新的KEIL MDK,笔者使用的是KEIL MDK V4.13a。下载完毕之后双击开始安装。首先看到欢迎界面: 点击Next,勾选安装协议:

下一步,选择安装路径(笔者因硬盘空间不足安装在E盘,但若读者硬盘资源充裕,则建议安装在C盘,跑起来快些): 下一步,填写用户信息,个人用户随意填入即可:

点击Next 就进入实质的安装过程啦,Wait for a Whle… … 很快安装完毕,看到2 个可选项: 1、保持当前uVision 的设置。 2、载入以下选择的工程实例,默认即可。

点击Next,来到最后一个安装界面: 1.是否安装ULINK Pro Driver V1.0驱动? 2.是否显示软件发布说明? 读者可以按照自己的需求勾选。 点击Finish,KEIL MDK就完成安装了,可以发现桌面上生成了名为“Keil uVision4”的可执行文件快捷方式。双击“Keil uVision4”图标打开Keil uVision4开发环境,此时Keil uVision4会自动载入一个工程项目(依安装的倒数第二步勾选而定),我们就此可以简单地看看KEIL MDK 的用户界面。

相关主题
相关文档 最新文档