ARM报告PWM

  • 格式:doc
  • 大小:384.00 KB
  • 文档页数:9

龙 岩 学 院 实 验 报 告

班 级07电本一班 学号2007050326 姓 名 刘桂银 同组人 实验日期2010.5.6 室温 大气压 成 绩

实验题目: PWM音乐输出 一、实验目的 1、复习GPIO的管脚功能及蜂鸣器电路蜂鸣的工作原理。 2、掌握PWM模块的基本原理及应用。 3、了解简谱和频率的关系 4、锻炼学生自己的设计、创造和综合性。 二、实验仪器

微型电子计算机(含软件H-JTAG V0.3.1和ADSv1_2)、Easy ARM2131开发板、UART0接口线、USB接口电源线和JTAG接口线以及部分跳线。 三、实验原理

(1)蜂鸣器控制电路 在EasyARM2131开发板上,接有一个蜂鸣器,由P0.7控制,通过跳线JP11选择连接。蜂鸣器控制电路如图一所示。

图一 蜂鸣器控制电路 电路说明:如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。 实验利用P0.7的输出功能,控制蜂鸣器鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器。LPC2131中,具有I2C总线功能的I/O口(P0.2-SCL、P0.3-SDA0;P0.11-SCL1、P0.14-SDA1)为开漏输出,在用作I2C总线以及其它功能时,需要加1K~10KΩ的上拉电阻。则此电路图在JP11前,加R22=10K的上拉电阻。

2、概述 LPC2131的脉宽调制器PWM建立在标准定时器0/1之上。应用在PWM和匹配功能当中进行选择。 PWM基于标准的定时器模块并具有其所有特性;PWM可独立控制上升沿和下降沿的的位置,这样是它能够应用于更多的领域;2个匹配寄存器可用于单边沿控制PWM输出。3个匹配寄存器共同控制一个双边沿PWM输出。 3、特性 脉宽调制器的特性如下: (1)7个匹配寄存器,可实现6个单边沿控制或3个双边沿控制PWM输出,或这两种类型的混合输出: --连续操作,可选择在匹配时产生中断; --匹配时停止定时器,可选择产生中断; --匹配时复位定时器,可选择产生中断。

(2)每个匹配寄存器对应一个外部输出,具有下列特性: --匹配时设置为低电平; --匹配时设置为高电平; --匹配时翻转; --匹配时无动作。 (3)支持单边沿控制和/或双边沿控制的PWM输出。 (4)脉冲周期和宽度可以是任何的定时器计数值。 (5)双边沿控制的PWM输出可编程位正脉冲或负脉冲。 (6)匹配寄存器更新与脉冲输出同步,防止产生错误的脉冲。软件必须在心的匹配值生效之前将它们释放。 (7)如果不能使能PWM模式,可作为一个标准定时器。 (8)带可编程32位预分频器的32位定时器/计数器。 (9)当输入信号跳变时,4个捕获寄存器可取得定时器的瞬时值,也可以选择是捕获事件产生中断。 4、结构 图(A)所示为PWM的方框图。在标准定时器模块上增加的部分位于图的右边和顶端。图(A)的PWM输出逻辑允许通过PWMSELn(在PWM控制寄存器PWMPCR中)位选择单边沿或者双边沿控制的PWM输出。

图(A) PWM方框图 5、基本操作 LPC2131微控制器的PWM功能是建立在标准的定时器之上的,它同样拥有32位定时器及预分频控制电路和7个匹配寄存器,可实现6个单边沿PWM或3个双边PWM输出,也可采用者两种类型的混合输出。它具有匹配中断,匹配PWMTC复位和匹配PWMTC停止功能,如果不使能PWM模式,可作为一个标准的定时器。PWM的基本寄存器功能框图如图4.103所示。

如图4.103所示,32位定时器计数器PWMTC的计数频率由pclk经过PWMPR进行预分频控制得到,而定时器的启动/停止、计数复位由PWMTCR控制。当有比较匹配事件发生时,PWMIR会设置相关中断标志(因为不是定时器溢出而产生中断,所以上图采用虚线连接)。若已打开中断允许(VIC),则会产生中断。当然,预分频寄存器PWMPR只是控制分频数,而其对应的预分频计数器是PWMPC,但用户不需要操作PWMPC。

6、 寄存器描述 外部中断具有 4 个相关的寄存器,如 表 (一) 所示。EXTINT寄存器包含中断标志, EXTWAKEUP寄存器包含使能唤醒位,可使能独立的外部中断输入将处理器从掉电模式唤 醒,EXTMODE和EXTPOLAR寄存器用来指定管脚使用电平或边沿激活方式。

表 (一)外部中断寄存器 (1)、 外部中断标志寄存器-External Interrupt Flag Register(EXTINT - 0xE01FC140) 当一个管脚选择使用外部中断功能时,对应在 EXTPOLAR 和 EXTMODE 寄存器中的 位选择的电平或边沿将置位 EXTINT 寄存器中的中断标志,向 VIC 提出中断请求,如果管 脚中断使能,将会产生中断。 向 EXTINT 寄存器的位 EINT0~位 EINT3 写入 1 可清除相应的外部中断标志。在电平 激活方式下,只有在该管脚处于无效状态时才能清除相应的中断标志。 一旦 EINT0~EINT3 中的一位被置位并开始执行相应的代码(处理唤醒和/或外部中 断),必须将该位清零,否则以后该 EINT 管脚所触发的事件将不能再被识别。 例如,如果外部中断 0 管脚的低电平将系统从掉电模式唤醒,为了将来还能进入掉电模 式,唤醒后的程序必须将 EINT0 位复位。如果 EINT0 位仍保持置位状态,后来的唤醒掉电 模式的任何操作都将失败,外部中断也不例外。 外部中断标志寄存器的位功能描述见 表 (二)。

表 (二) 外部中断标志寄存器

(2)、 外部中断方式寄存器-External Interrupt Mode Register (EXTMODE - 0xE01FC148) EXTMODE寄存器中的位用来选择每个EINT脚是电平触发还是边沿触发。只有选择用 作EINT功能(通过管脚连接模块)并已通过VICIntEnable(向量中断使能寄存器)使能的管 脚才能产生外部中断(当然,如果管脚选择用作其它功能,则可能产生其它功能的中断)。 外部中断方式寄存器的位功能描述见 表(三)。 注:当某个中断在 VICIntEnable 中被禁能时,软件应该只改变 EXTMODE 寄存器中相 应位的值。中断重新使能前,软件向 EXTINT 写入 1 来清除 EXTINT 位,EXTINT 位可通 过改变激活方式来置位。 表(三) 外部中断方式寄存器 四、 实验程序 1.实验程序 #include "config.h" #include "music.h" #define BEEP 1 << 7 /* P0.7控制蜂鸣器 */ /* 歌曲曲谱 -欢乐颂*/ const uint32 HCMM[] = { _MI, _MI, _FA, _SO, _SO, _FA, _MI, _RE, _DO,_DO, _RE, _MI, _MI, _RE, _RE, _MI, _MI, _FA, _SO, _SO, _FA, _MI, _RE, _DO, _DO, _RE, _MI, _RE, _DO, _DO, _RE, _RE, _MI, _DO, _RE, _MI, _FA,_MI,_DO,_RE,_MI,_FA,_MI,_RE,_DO,_RE,_SO,_MI,_MI,_MI, _FA,_SO,_SO,_FA,_MI,_RE,_DO,_DO,_RE,_RE,_DO,_DO, }; const uint32 HCMM_L[] = { _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _2, _8, _2, _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _4, _2, _8, _2, _4, _4, _4, _4, _4, _8, _8, _4, _4, _4, _8, _8, _4, _4, _8, _8, _4, _8, _8, _4, _4, _4, _4, _4, _8, _8, _4, _4, _4, _4,_2,_8,_2, }; /* 歌曲曲谱 -好听歌曲*/ const uint32 HCMM1[] = { _LA, _SO, _MI, _LA, _SO, _MI, _LA, _LA, _SO, _LA, _LA, _SO, _MI, _LA, _SO, _MI, _RE, _RE, _DO, _RE, _MI, _MI, _SO, _LA, _DO1, _LA, _SO, _MI, _MI, _SO, _DO, _MI, _MI, _MI, _MI, _MI, _1LA,_1LA,_1SO,_1LA, }; const uint32 HCMM_L1[] = { _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _8, _8, _8, _8, _8, _4, _8, _2, _4, _4, _4, _8, _8, _8, _4, _8, _2, }; //延时函数 void Delay(uint8 dly) { uint32 i;