您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页ARM开发板使用手册

ARM开发板使用手册

来源:步遥情感网
ARM开发板使用手册

PHILIP LPC2132

ARM7TDMI

第一章 介绍

LPC2132开发板是专门为arm 初学者开发的实验板,用户可以做基础的arm实验,也可以做基于

ucos-ii的操作系统实验。本系统的实验源代码全部开放,用户可以在此基础上开发产品,减少重复劳动。由于LPC2132体积很小,并且功能强大,因此特别适合需要复杂智能控制的场合,其运行速度高于早期的80486计算机,而体积只有指甲大。我们已经将LPC2132产品成功应用在干扰比较强的工业场合,经过6个月的运行,各项指标符合要求。因此我们特别推荐这一款开发板作为ARM初学者入门。由于此款开发板体积很小,非常适合直接应用在工业以及民用智能控制器的场合。

LPC2132 CPU介绍

LPC2131/2132/2138 是基于一个支持实时仿真和跟踪的16/32 位ARM7TDMI-STM CPU,并带有32kB、kB 和512kB 嵌入的高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。较小的封装和很低的功耗使LPC2131/2132/2138 特别适用于访问控制和POS 机等小型应用中;由于内置了宽范围的串行通信接口和8/16/32kB 的片内SRAM,它们也非常适合于通信网关、协议转换器、软件 modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。多个32 位定时器、1个或2 个10 位8 路的ADC、10 位DAC、PWM 通道、47 个GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。

主要特性

  16/32 位ARM7TDMI-S 核,超小LQFP 封装。

  8/16/32kB 的片内静态RAM 和32//512kB 的片内Flash 程序存储器。128 位宽

度接口/加速器可实现高达60 MHz 工作频率。

  通过片内boot 装载程序实现在系统编程/在应用编程(ISP/IAP)。单扇区或整片

擦除时间为400ms。

  256 字节行编程时间为1ms。

  EmbeddedICE®RT 和嵌入式跟踪接口通过片内RealMonitorTM 软件对代码进行实时

调试和高速跟踪。

  1 个(LPC2131/2132)或2 个(LPC2138)8 路10 位的A/D 转换器,共提供16 路

模拟输入,每个通道的转换时间低至2.44us。

  1 个10 位的D/A 转换器,可产生不同的模拟输出。(仅适用于LPC2132/2138)

  2 个32 位定时器/计数器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)

和看门狗。

  实时时钟具有的电源和时钟,可在节电模式中极大地降低功耗。   多个串行接口,包括2 个16C550 工业标准UART、2 个高速I2C 接口(400 kbit/s)、

SPITM 和具有缓冲作用和数据长度可变功能的SSP。   向量中断控制器。可配置优先级和向量地址。

  小型的LQFP 封装上包含多达47 个通用I/O 口(可承受5V 电压)。   多达9 个边沿或电平触发的外部中断管脚。

  通过片内PLL(100us 的设置时间)可实现最大为60MHz 的 CPU 操作频率。   片内晶振频率范围:1~30 MHz。   低功耗模式:空闲和掉电。

  可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。   通过外部中断将处理器从掉电模式中唤醒。

  单电源,具有上电复位(POR)和掉电检测(BOD)电路:

  CPU 操作电压范围:3.0V~3.6 V (3.3 V± 10﹪),I/O 口可承受5V 的电压。 实验开发板的处理器采用Philips最新的LPC2132 低功耗32位 ARM处理器,内带16k RAM,K flash,工作频率最高60M。

实验种类

可以做如下实验(实际上不限于这些):

LCD液晶控制器实验,您可以掌握在没有操作系统的支持下编写LCD液晶驱动以及菜单制

作              

 GPIO实验,通过GPIO驱动发光管

 SPI总线实验,可以掌握对SPI外设的操作,如74HC595的操作

 A/D D/A实验,掌握模拟信号采样并转化为数字量,以及数字量生成模拟电压  PWM实验,掌握脉宽调制的生成

 实时时钟实验,掌握对内部时钟的设置以及读取

 脉冲计数实验,掌握用中断方式对外部跳变信号的计数以及查询方式计数

 串行通信实验,掌握RS232通信,不同波特率的设置,查询方式通信以及中断方式通信

 I2C总线实验,掌握如何通过I2C对 E2ROM 24C04操作  键盘实验,掌握键盘扫描原理以及如何获得键码  7段LED实验,掌握在LED显示数字的技巧  低功耗实验,掌握如何使处理器进入节电模式

 通过串口下载程序代码,掌握远程程序修改的方法

 中断控制实验,学习如何使程序进入管态以及核态,学习中断向量的设置,以及C语言环境下对中断的处理。

 掌握如何在没有硬件的情况下在VC环境编写嵌入式应用程序,并模拟真实环境调试。进一步掌握在硬件平台已经完成后如何把VC环境编写嵌入式应用程序移植到硬件平台上。

 掌握硬件驱动的API函数的编写、API调用的方法。掌握函数库的生成以及库函数的调用,从而使源程序中关键部分的源代码不可见,保护知识产权。  掌握用C++对嵌入式应用编程,掌握C,C++以及汇编混合编程

 掌握如何用UML建立模型并且生成C++程序,掌握对自动生成的C++程序的嵌入式改写并移植到目标系统

  

  操作系统实验,ucos—ii

也可以直接用开发板做智能控制器、智能仪表等工业设备。

实验器材清单

简易仿真头一个 20芯扁平电缆1根,并口电缆一根,串口电缆一根,实验板一块,5v电源一个 光盘一张,光盘包括ads1.2,arm参考资料,实验源代码,调试代理,外设资料 ,原理图

在使用本开发板前,应该具备的基础知识包括:ARM体系结构和编程,会C语言。

第二章 开发环境的搭建

开发环境我们采用ADS1.2集成环境,请先安装ADS1.2。如何使用ADS1.2请参考光盘内的手册。ARM开发环境和51单片几很不一样。熟悉51的都知道用仿真器来调试,但arm却不一样,它通过JTAG接口仿真。因此这里先介绍JTAG仿真的概念。

JTAG调试接口

为什么现在的微处理器采用JTAG?

当前许多复杂的微处理器的内核不再能通过芯片的外设直接访问,调试芯片程序变得困难。还有,为了缩短开发周期加快产品进入市场的速度,直接将CPU安装在电路板上调试也更接近实际工作情况。这些都需要JTAG装置来完成。

JTAG的引脚定义

遵循JTAG的器件包含以下几个管脚

TCK 测试时钟输入,它和系统时钟不同 TDI测试数据输入,通过它数据移位进入器件 TDO测试数据输出,通过它数据从器件移出

TMS测试模式选择,在JTAG规范中TMS命令选择测试模式 TRST测试复位输入,它为TAP控制器提供异步初始化

器件的测试支持功能是通过TAP控制器来实现的。TAP是一个状态机,它控制控制所有相关操作,每种遵循JTAG的器件都有自己的TAP控制器,通过TCK和TMS可以使状态机内部的状态发生变化,从而支持诸如断点、单步、内部观察等调试工作。

本章针对ARM7TDMI介绍调试结构。ARM的调试体系采用协议转换器来使调试器通过JTAG与ARM核直接通信。前面JTAG标准中提到的扫描链功能是测试用,这里把它作为调试用:捕获数据总线上的信号并向内核或存储器插入新的信息。ARM7TDMI-S核内具有EmbeddedICE逻辑,EmbeddedICE逻辑提供对片内调试的支持。调试指令直接通过扫描链插入ARM内核并执行。根据插入调试指令的不同,内核可以处于观察、保存或改变状态。ARM的调试体系可以使程序指令执行速度处于调试速度或全速运行。在ARM中采用JTAG的特

点是:通过JTAG接口可以观察ARM内核状态和系统状态(注意:系统状态包括片内外设,不同于内核状态);不占用额外的目标系统资源;提供传统的断点访问和观察点访问;不再需要另外的UART端口来和监控程序通信。 围绕ARM内核有两个扫描链:围绕整个内核外围的一个扫描链以及仅仅覆盖数据总线和断点的扫描链。由于后者的链比较短,从而使调试指令和数据可以快速插入内核,避免了额外的时间。

ARM的JTAG调试需要如下设备:   一台运行调试软件的主机

  一个EmbeddedICE协议转换器。EmbeddedICE协议转换器将远程调试协议命令转

换成所需要的JTAG数据,从而对目标系统上的ARM7TDMI-S内核进行访问。它包括两个部分:将串行数据信号转换成JTAG接口兼容信号的装置以及带有JTAG接口的ARM调试体系内核。

其中前半部分可以是仿真器硬件,后半部分是ARM片子本身就支持的。 根据功能需要,仿真器硬件可以做了比较复杂也可以很简单。

带JTAG接口的目标板 EmbeddedICE

协议转化调试主我们采用简易的仿真器。 器

调试主机运行调试程序,如ADS,RealView,SDT等。ICE协议转换器其实包含两部分:协议转换硬件和软件,复杂的硬件一般采用FPGA实现,简单的可以就用一片数字缓冲电路实现。协议转换软件一般在调试主机上运行,可以是API的方式也可以用后台服务的方式。调试主机和协议转换硬件之间可以采用各种方式连接:并行、串行、网络以及USB,只要最终递交给ICE协议转换器的数据一致就可以,这是通过运行在ICE协议转换器 上面的通信软件来实现的。ICE协议转换器和目标板通过遵循JTAG电气规范的电缆连接。

简易仿真头的使用

简易仿真头采用wiggler电缆,其使用过程如下:

硬件连接

按照下图连接仿真头、计算机以及实验板

软件配置

1 首次使用时先安装驱动(以后不用再安装)--- 执行文件下的安装驱动.exe 安装好并口驱动和OCX

2,安装完毕后即可运行Arm7Agent或Arm9Agent调试ARM7系统或ARM9系统 3,如果在以后的使用过程中发现程序无法启动重新执行安装驱动.exe 即可 4,在ADW(SDT)/AXD(ADS)的调试配置选项里选择remote_a.dll 5,在ADW/AXD的调试配置里IP地址必须填写:127.0.0.1

二 常见问题

1, THUMB/ARM混合编程时断点设置要素

当CPU处于一种CPU模式时(THUMB或ARM) 断点只可以设置在当前模式 下的指令处不可以设置在另一种模式下的指令

解决方案设置一个断点在CPU模式切换指令处(如BX) 当程序运行到此指 令并停下来后然后通过单步执行(Step)进入另一种状态这时候就可以 在当前模式下任意设置断点了

2, THUMB/ARM混合编程时因为ADW/AXD启动时默任的CPU模式为ARM模式如果 你启动调试前你的ARM CPU 正在执行Thumb模式指令那么将会导致调试错 误

解决方案按一下你的板子的复位键,然后再启动ADW/AXD即可

3, 为了加快软件影响单步执行速度现在暂时屏蔽了semihosting 功能

4, 如果出现无法逼使CPU进入调试的提示只需要复位你的板子,重新启动软 件即可

5, 如果发现软件没有任何动作把它关了再启动

6, 如果发现软件根本无法运行看不到其运行界面那么执行安装驱动.exe 重新驱动OCX即可

7, 如果出现打开并口失败,那么执行安装驱动.exe , 重新并口驱动即可 8 如果提示检测不到ARM核如果你的CPU没坏供电正常那么就一定是你的

JTAG板子问题了,应该参考常用的那种\"SDT\"或\"Wiggler\"接线然后在JTAG调试软 件选择对应的选项SDT或wiggler或自定义

9, 排除这些如果出现其他的调试错误,那么就是你设置ADW/AXD或你的板子问题了

10 有时候,如果你计算机的防火墙开着,可能会使调试不正常,请设置防火墙为允许本代

理程序运行,或者干脆关闭防火墙

安装代理软件

首先在光盘找到调试代理目录,安装并口驱动。出现如下界面:

选择install,出现如下界面,说明驱动安装成功了。

然后开始打开该目录下的arm7.exe 。如果jtag接口没有连接好,或者arm开发板没有上电,就会出现如下界面:

否则,成功的话就出现成功检测到arm内核界面

然后开始配置ads开发环境

打开AXD程序,选择OptionsConfigue Target

在Choose target 里面选择ADP,然后d点击Configue,出现

点击Select,出现

选择ARM ethernet driver,确认OK,回到界面

点击Configure,出现

在Target IP address框填入:127.0.0.1 ,然后OK就可以了。这时候,如果你没有打开调试代理软件,AXD会出现失败。因此,必须先打开调试代理软件,然后运行AXD才能正常。 打开一个现有的源程序,并且运行 启动CodeWarrior for arm develop suite

在file下选择一个现有文件。对本例子而言,将光盘的实验程序全部拷贝到C盘,选择c:\\实验 目录下的BeeP文件夹,打开BeepCProject,工程将出现在主界面下,在BeepCProject下有个调试选项:Debug,DebugRel,Release .它们分别对应在RAM里面运行程序,在flash里面运行程序。其实不同仅仅在于debug setting的配置上面。这里选择Debug,也就是在ram里面运行程序,这时源程序自动编译。查看调试代理目前是否正常运行。在Project里面选择Debug,这时候AXD将自动运行,并停在当前指令入口处。也就是复位后的地址处。对于LPC2132而言,停留在0x40000000处,这里放的是LDR PC, Reset_Addr ,也就是管理模式下的第一条指令。然后run,这时候程序应该开始执行,然后自动停在main()函数地方。假如没有停在这里,请在AXD的File下面选择reload current image,重复上述过程,这时就停在Main()上了。接着Run,程序运行,观察蜂鸣器应该连续发声。

万龙LPC2132串口写程序步骤

LPC2132的flash可以通过2种方式写入:IAP以及ISP。对于初学者我们推荐采用

ISP写。在介绍以下方法前,我们认为您已经安装好ADS开发环境。

配置Codewarrier

1. 1. 因为写入必须采用hex格式,首先设置hex输出文件 select codewarrier edit-->debug rel settings

如上图:post link 选择arm from elf

在arm linker 选择 scatter ..\\SYSTEM\\debug_in_flash.scf

在option

image entry point 选0x0

在LINKER arm fromelf output format 选intel 32 bit hex 在output file name 填上最终目标hex文件 例如:c:\\abc.hex 然后 保存,编译工程。看看:c:\\abc.hex是否成功

安装philip lpc2000 flash utility

连接电脑串口与开发板 开发板上电

设置philip lpc2000 flash utility

select device lpc2132 XTAL 11059.2 Uaud rate 9600

短路开发板跳线器J6

选择Read device ID 提示复位开发板 按一下开发板RST键,松开,点确定

这时候part id 和 boot loader id应该出来,说明正常

然后在flash programming 的file name 选择你所要写的程序abc.hex(必须采用hex格式) 执行upload to flash 下载结束后 执行compare flash 显示compare ok 说明正常。 断开跳线器J6。按RST程序应该运行

第三章

开发板硬件原理介绍

了解原理图以前,请先熟悉LPC2132 CPU 光盘内有LPC2132的datasheet。

注意:CPU所有的引脚全部引出,因此CPU所有功能都可以使用,以下介绍的是开发板接的外部设备,包括以下几个部分:

供电电源,CPU,串行通信,复位电路,键盘电路,PWM电机驱动,SPI数码管部分,JTAG接口部分,I2C EEROM部分,BEEP以及LED部分,模拟输入。 在学习以下内容时请对照原理图。元器件资料光盘里有

电源

LPC2132采用单电源供电,供电3.3V 。由于电路板上某些设备采用5V供电,因此输入电源首先经过7805稳压形成5v电压,然后送给AS1117-3.3低压差稳压电路,产生3.3v供CPU使用。

CPU部分

  CPU晶体振荡器采用11.0592 CPU内部可以倍频至60M   实时时钟采用32.768K的晶体振荡器,其供电电源,通过外接的纽扣电池供电,

因此开发板断电不会对内部的万年历有影响。

  CPU的模拟地和数字地分开,有利于保证a/d转换的精度。片内的A/D转换精度

10位,如果需要14位转换精度,可以采用TLC2543 我们对购买的用户提供代码以及接口资料。

  CPU管脚许多是功能复用的,在作GPIO输出功能时候不需要外接上拉电阻, 由

于引脚在输入模式下为高阻抗,因此对一些输入脚加上拉电阻保证其处于确定的状态,防止不确定的信号引入。

RS232通信

RS232通信有2路,通过MAX232将3.3v电平转换为RS232电平。由于MAX232适合用在5v的TTL电平场合,因此我们通过分压让其适合3.3v场合。本机RS232最高工作频率115200bps。如果需要在工业场合用通信,建议直接采用RS485通信[需要重布电路板],也可以在目前的RS232 输出外接RS232/RS485通信转换模块,效果相同。

8段数码管

开发板上一共4个8段共阳数码管。采用轮巡的方式动态扫描,每个发光管点亮时间大约20ms..74HC595是串并变换电路,SPI总线的数据在74HC595时钟作用下串行输入,变换为并行8位输出,控制数码管段信号。

键盘

键盘键数量不多,没有采用动态扫描,直接通过GPIO采样。上拉电阻是为了保证按键信号处于确定状态,而100ome的串联电阻为了防止用户自己编程序将这些引脚设置为高电平的时候,同时按下键而烧毁CPU管脚。

液晶接口

采用的LCD有2种接口方式,SPI接口以及并行接口。这里采用SPI接口,液晶背光通过开关管由CPU控制,液晶对比度调节通过电路板上黄色的可调电阻调节,出厂前已经调好,请不要自行调节。液晶的编程说明书见光盘资料。

串行EEROM

采用I2c接口,存储器可能为24c04,24c02,24c01 不同的开发板焊接的型号不同。I2c地址分为设备号码,内部地址号。内部地址号由2部分组成:器件地址以及寄存器地址,详细请察看24c04说明书。

JTAG调试接口

Jtag接口的RTCK必须接一个下拉电阻,用来允许JTAG调试。

RTC部分

内部的实时时钟外接32.768k crystal。早先的LPC2100系列没有后备电源,调电后时间就丢失,而这款CPU考虑到这个问题,外加了电池供电,至少3年时间没问题。

A/D转换部分

A/D转换10位精度,通过电位器输入,范围0-3.3V,如果用户需要14 位分辨率,可以采用TLC2543,我们可以提供接口以及程序。

PWM输出

PWM输出控制马达运行,占空比越大,输出平均电压越高,马达转得也越快。为了防止开关管关闭的时候电机线圈反向电压多高击穿开关管,在电机并联了续流二极管。另外,由于

电机直接用3.3v电源供电,为了防止全速启动的开始阶段启动电流太大,影响CPU的正常工作,串联了10ome的电阻。

复位电路

可以采用专用复位电路,比如max708 但价格贵,这里采用自行设计的复位电路,实际效果不错。RST为低电平复位,正常工作的时候必须为高电平,当开发板发发生瞬间掉电的时候,电解电容通过二极管快速放电,当重新上电的时候,通过10K的电阻向电解电容充电,达到延迟复位,保证电压正常后CPU程序开始运行,否则可能会跑飞程序。

第四章

实验程序

各种实验在光盘的源代码里面都包含了,这里详细介绍DEMO程序,其余的程序请读者自行分析运行。可以在我们程序的基础上改动称为你自己的应用。

所有的C程序都分为2个部分:初始化启动代码以及应用程序。由于启动代码我们已经做好,因此,用户只需要关心应用程序的编写。不过,为了全方位掌握arm ,建议了解启动代码。

启动代码

如果你的程序全部用汇编语言,启动代码就不需要,只需要对系统初始化,这和用单片机汇编开发类似。但如果需要用C编写程序,必须提供启动代码。也许有些人觉得奇怪,为什么用Keil C51不用写任何启动代码,但在ARM下编程序确要写?这是因为arm公司自己不生产CPU只出售芯片技术,许多公司扩充arm内核,形成具有各自特色的arm处理器。例如:ROM,RAM的地址安排都各不一样,片内外设也各不相同。而51的启动代码已经在Keil c51里集成用户不需要自己另外再写。你可能会问:为什么一定要用汇编写启动代码而不能直接用C语言来初始化?因为C语言在工作以前必须初始化一些C语言的库,例如:为C程序分配栈空间。当这些基本项目没有初始化的时候,C语言的程序是无法工作的。虽然C语言最终被编译器编译为汇编代码,但只有基本的设置完成,这些代码才能正常运行,arm 的编译器不会做这些初始化。

编写启动代码需要有如下的预备知识:   了解arm异常的种类

  了解各种异常对应的堆栈分配方法   了解CPSR和SPSR

  了解汇编程序与C程序的调用   了解ADS编译器相关的一些知识   了解某些系统相关的外设设置

启动代码的编写可谓千变万化,即使同一型号的CPU启动代码也不一样,这是由编写启动代码的风格,系统的要求决定的。但总的来说,启动代码的工作流程都是一样的,掌握了

编写的要领,你也就会自如地写出适合自己需要的启动代码。 启动编写的步骤如下: 初始化异常向量 初始化CPU芯片 初始化目标板 初始化堆栈

调用__main()函数初始化C语言库 具体的代码请自行分析demo程序

应用程序

应用程序可以做成模块化的方式,不同的功能放在不同模块文件里面。然后再主程序里面调用即可,相信读者有这方面的经验。驱动程序也可以做成此类方式。 以下进给出演示程序说明,其它实验的代码都在提供的光盘里。

演示程序: 演示实验板部分功能, 驱动程序包括在驱动模块里,请看对应目录下面的文件,这里不再列出和说明。

首先在LCD显示4行文字,然后通过UART0打印信息,接着通过电位器R16检测模拟电压,经过运算后由PWM输出驱动马达,并且同时在8段数码管显示。然后测试键盘,轮流 按键1-6 发光二极管交替亮灭。注意:由于马达采用了廉价的玩具电机,因此请不要长期高速运行,否则容易出问题,稍微试验一下,看看效果就可以了,玩具电机的启动转矩比较大,请把电位器先适当打高,然后等马达启动后打低以降低速度

#include \"config.h\" #include \"misc.h\"

#define HC595_CS 0x0008000 // P0.15口为74HC595的片选 #define BP 0x0020000 //蜂鸣器地址

#define LCDLIGHT 0x4000000 //液晶背光选择

#define LIGHT 0x10000 //set p1.16 as gpio for led light #define length 16

//以下是外部函数申明

extern int adc(int channel); extern char const DISP_TAB[16] ; extern void MSpiIni(void); extern void LedInit(void);

extern void DisplayNumber(int i); extern int GetKey(void);

extern void EnableFIQInterrupt(void); extern void EnableIQRInterrupt(void); extern void Init_Serial_A(void); extern int print(char *p);

extern void GetSystemTime(STM *systemtime); extern void DelayNS(int); extern void RTCIni(void);

extern char * itoa(char *p, long int i); extern void short_beep(void); extern void TextDisplayInit(void); extern void clearpicture(void); extern void displaypicture(void); extern void graphshow(void) ;

extern void printsentence(unsigned short int x,char *p);

#define PWMCYCLE 800 //pwm周期定义 const char ad[][30]={ //定义显示文字 \"欢迎使用简易ARM7\\"LPC2132-实验平台\\"这款开发实验板 \\"适合工业控制场合\\"可以做很多种实验\};

/**************************************************************************** * 名称:main()

****************************************************************************/ int main(void) {

int i,j=0; int count; int pwmdata; int result;

char buffer[100]; STM systemtime;

char *p1,*p2,*p3,*p4,*p5; char pp[5][16];

p1=pp[0]; p2=pp[1]; p3=pp[2];p4=pp[3]; p5=pp[4]; PINSEL2= 0x0004; PINSEL0 = 0x00055555; // 管脚功能设置 PINSEL1 = 0x000400;

Init_Serial_A(); //波特率9600 8bit 1 没有奇偶校验 IO1DIR|= BP;

IO1CLR|= BP; //初始化BP TextDisplayInit(); //初始化LCD DelayNS(1);

IO0DIR|=LCDLIGHT; //配置LCD北光选择 IO0CLR|=LCDLIGHT;

clearpicture(); //图片显示 准备 DelayNS(1);

displaypicture( ); //显示图片 graphshow(); DelayNS(50);

TextDisplayInit(); //文字显示准备 j=1;

DelayNS(1);

for(i=0;i<4;i++) //显示4行文字

printsentence(i,(char *)&ad[j%length]); //xdenotes the start line the 128module is 4 line and 8 column

IO0DIR|= HC595_CS; IO0SET|=HC595_CS; RTCIni(); // 初始化RTC

DelayNS(1);

pwmdata =1; //pwm 数据寄存器初始化 PWMPCR=0x2000; //enable pwm5 PWMMCR=0x0002;

PWMMR0 = PWMCYCLE; // 设置PWM周期,PWMMR0=PWMCYCLE PWMMR5 = pwmdata; // 初始化PWM占空比,PWMMR5=1382 PWMLER = 0x21; // PWMMR0、PWMMR5锁存,更新PWM占空比 PWMTCR=0x09;

short_beep(); //蜂鸣几次

//以下通过串口打印

print(\"\\nwelcome to use lpc2132 development board\\n\\nfor more information please visit our website:\\n\");

print(\"\\nfor more information please visit our website:\\n\"); print(\"\\nhttp://www.embedchina.cn for technical support\\n\\n\");

print(\"---------------------------------------------------------------------------------------------\"); print(\"\\nplease press key to test key 1 key2 ke3 key4 key5 key6\\n\");

print(\"\\neach time the key was pressed,the led will turn on and off alternatively\\n\");

print(\"\\nplease turn R16 to change motor speed and the LED display will also indicate the speed\\n\");

print(\"\\npress RST to reset board\\n\");

print(\"\\n---------------------------------------------------------------------------------------------\");

while(1) {

result=adc(0); //检测电位器输入 pwmdata=(result*PWMCYCLE)/33; //设置pwm数据 PWMMR5=pwmdata; //发送 PWMMR0 = PWMCYCLE; PWMLER = 0x21; PWMMR5=pwmdata; count++;

LedInit(); //8段LED初始化 DisplayNumber(pwmdata); //8段LED 显示数据

switch(GetKey()) //根据键盘输入执行LED亮灭 {

case 1:

IO1CLR|= LIGHT; break; case 2:

IO1SET|= LIGHT; break; case 3:

IO1CLR|= LIGHT; break; case 4:

IO1SET|= LIGHT; break; case 5:

IO1CLR|= LIGHT; break; case 6:

IO1SET|= LIGHT; break; } }

return(0); }

第五章 FAQ

Arm内核检测不到

检查JTAG接口是否良好,并口驱动安装是否正确,也可以按开发板的RST来复位系统

项目编译出问题

可能目录的只读属性没去掉,路径设置有问题。有时候由于存在上次编译的*.o文件,建议删除这些文件,删除方法见本说明书前面介绍,也可以直接在目录里删除。有时候scatter文件路径设置不正确也会使编译不正确。如果以上方法还是无法解决,建议在codewarrier项目里删除所有文件,然后重新。注意:这里的删除不是到目录里面删除,而是项目对件索引的删除。

在AXD里面没法运行

检查配置是否正确,在image load 里面选择debug rel 目录下面的 .axf文件,这是最终的image

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务