跳转到主要内容

Keil相关

【下载】RealView® 编译工具 4.0 版 《汇编器指南》

editor /

本前言介绍《RealView 编译工具汇编器指南》。 本章分为以下几节:

• 第x 页的关于本手册
• 第xiv 页的反馈

本手册提供有关 RealView® 编译工具 汇编器(ARM 汇编器)的指导和参考信息。 其中包括 armasm、独立的汇编器以及 C 和 C++ 编译器中的嵌入式汇编器。本手册介绍汇编器的命令行选项,可供汇编语言程序员使用的汇编语言助记符、伪指令、宏和指令。

适用对象

本手册是为所有使用 RealView 编译工具生成应用程序的开发人员编写的。 本手册假定您是一位有经验的软件开发人员,并且熟悉《RealView 编译工具要点指南》中所介绍的 ARM 开发工具。

Keil中常见的几种警告

editor /

Keil中常见的几种警告,固然,相对于错误的,警告的程度不及错误的严重性,有时候忽略,会出现意想不到的错误。先看看常见的几种错误,分析出来现的原因。

1、Warning 280:’i’:unreferenced local variable
说明 局部变量 i 在函数中未作任何的存取操作
解决方法 消除函数中 i变量的宣告

2、Warning 206:’Music3’:missing function-prototype
说明 Music3( )函数未作宣告 或未作外部宣告 所以无法给其他函数调用
解决方法 将叙述void Music3(void)写在程序的最前端作宣告 如果是其他文件的函数则要写成 extern void Music3(void),即作外部宣告

3、Compling :C:\8051\MANN.C
Error:318:can’t open file ‘beep.h’
说明 在编译 C:\8051\MANN.C 程序过程中 由于 main.c 用了指令#include “beep.h”,但却找不到所致
解决方法 编写一个 beep.h 的包含档并存入到 c:\8051 的工作目录中

【下载】RealView® 编译工具(4.0版)库和浮点支持指南

editor /

本前言介绍《RealView 编译工具库和浮点支持指南》。 本前言分为以下几节:

• 第vi 页的关于本手册

• 第ix 页的反馈

本手册介绍了 ARM C 和 C++ 库、与 ISO 标准的符合情况、与目标相关的函数调整以及应用程序特有的要求。本手册还介绍了 ARM C 微型库和 ARM 的浮点计算支持。

本手册是为所有使用 RealView 编译工具 (RVCT) 构建应用程序的开发人员编写的, 本手册假定您是一位经验丰富的软件开发人员。 有关 RVCT 附带的 ARM 开发工具的概述,请参阅《RealView 编译工具要点指南》。

【下载】RealView® 编译工具(4.0 版)编译器参考指南

kelly /

本前言介绍了《RealView 编译工具编译器参考指南》。它分为以下几节:

• 第vi 页的关于本手册

• 第x 页的反馈

本手册提供有关 RealView 编译工具 (RVCT) 的参考信息,并介绍了 ARM 编译器的命令行选项。本手册也提供有关 ARM 如何在编译器中实现 C 和 C++ 的参考材料。有关使用和控制 ARM 编译器的一般信息,请参阅《RVCT 编译器用户指南》。

本手册是为所有使用 RVCT 编写应用程序的开发者编写的。本手册假定您是一位经验丰富的软件开发人员。有关 RVCT 附带的 ARM 开发工具的概述,请参阅《RealView 编译工具要点指南》。

总结硬件仿真与烧写程序结果不一样的原因

kelly /

<strong> 一、配置问题:</strong>

实际烧片时单片机的配置字与仿真的时候是不是一样?烧写时是否配置正确?

<strong> 二、资源问题:</strong>

单片机的ROM、RAM大小与仿真器的ROM、RAM大小是不一样的!

<strong> 三、驱动能力问题:</strong>

通常仿真器的驱动能力比单片机要强;可以分两步检查,一是分别用仿真器与单片机时对应IO口波形进行对比,二是当仿真器与外设连接与不连接时波形的对比;
  
要进行基本要素分析:单片机供电正常?起振没有?复位电路正常?芯片损坏?

【下载】Keil C51与MDK-ARM并存方法

kelly /

很多朋友都在想,怎么让keil C51与ARM能够并存使用。有安装经验的朋友都知道,安好C51后再安ARm,C51不能正常工作;安好ARM后再安C51,ARM不能正常工作。本文将详细介绍Keil C51与MDK-ARM并存的方法。

首先我们看下本历程系统及软件相关版本:

<center><img src="http://mm32.eetrend.com/files/2016-09/wen_zhang_/100002926-9541-1.jpg&q…; alt=""></center>

第一步,先安装Keil C51,如下图所示:

【下载】AN0001 MDK5.18 安装指南

kelly /

<strong>1、 MDK5.18 安装</strong>

打开从Keil官方网站下载的MDK5,双击mdk518.exe,进行安装。这里我们将 其安装到D 盘,MDK5.18
文件夹下,需要设置安装路径,如图1.1 所示:

<center><img src="http://mm32.eetrend.com/files/2016-09/wen_zhang_/100002899-9471-1.png&q…; alt=""></center>

<center><i>图1.1 设置安装路径到D:\MDK5.18 文件夹下</i></center>

如何形成一个良好的编程风格(二)

kelly /

<strong> 3、标识符</strong>

a、变量的命名

方法一:采用匈牙利命名法。命名规则的主要思想是“在变量中加入前缀以增进人们对程序的理解”。

例如平时声明32位整型变量Length对应使用匈牙利命名法为unLength。现在列出经常用到的变量类型。

变量类型 示例

char cLength

unsigned char ucLength

short int sLength

unsigned short int usLength

int nLength

unsigned int unLength

使用Keil判断ARM的冷启动和热启动的方法

kelly /

常把单片机系统的复位分为冷启动和热启动。所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位。复位后,RAM的内容都没有改变。在某些场合,必须区分出设备的重启是热重启还是冷重启。常用的方法是:确定某内存单位为标志位(如0x40003FF4~0x40003FF7 RAM单元),启动时首先读该内存单元的内容,如果它等于一个特定的值(例如为0xAA55AA55),就认为是热启动,否则就是冷启动。

根据以上的设计思路思路定义一个变量:

uint32 unStartFlag;

在程序启动时判断:

if(unStartFlag==0xAA55AA55)

{

//热启动处理

}

else

{

//冷启动处理

unStartFlag=0xAA55AA55;

}

ARM 7 用户模式下禁止/使能中断的一种方法--使用软中断 for Keil MDK

kelly /

最近写一个程序,需要在用户模式下关中断,但ARM 7的体系结构决定了中断必须在特权模式下才可以更改,所以想到使用ARM的软中断来实现关中断和开中断。

使用软中断,首先要有硬件指令的支持,ARM有条指令是SWI。

SWI 指令的格式为:

SWI {条件} 24 位的立即数

SWI 指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在 SWI 的异常处理程序中提供相应的系统服务,指令中 24 位的立即数指定用户程序调用系统例程的类型,相关参数通过通用寄存器传递,当指令中 24 位的立即数被忽略时,用户程序调用系统例程的类型由通用寄存器 R0 的内容决定,同时,参数通过其他通用寄存器传递。

指令示例:

SWI 0x02 ;该指令调用操作系统编号位02的系统例程。

在keil MDK中,关键字__svc可以产生硬件SWI指令,使得处理器能响应软件中断。关键字__svc、keil MDK帮助文件中这样描述:

__svc 关键字声明超级用户调用 (SVC) 函数,该函数最多使用四个类似于整数的参数,并通过 value_in_regs 结构最多返回四个结果。

__svc 是一个函数限定符。它影响函数的类型。