资源描述:
《ARM程序设计范例1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、如图所示,系统的工作主时钟频率为64MHz,要求实现如下功能:l按开关SB1202,LED灯同时亮一段时间后熄灭l按开关SB1203,定时器time0输出的PWN为占空比20%的波形,使蜂鸣器延时5秒钟响一短声,连响5声。请编写下列函数:(1)定时器Timer0用于产生PWM驱动蜂鸣器,请完成初始化函数Timer0_init()(2)GPIO端口的初始化函数Port_init()(3)中断配置初始化函数Int_init()(4)用于LED灯的延时程序Delay(nTime)(5)LED灯的驱动程序LED1_on(),LED
2、1_off(),LED2_on(),LED2_off(),LEDS_on()全亮,LEDS_off()全灭(6)外部中断EINT4567的中断服务程序EINT4567_ISR()(7)定时器Timer0中断服务程序Timer0_ISR()(8)主程序main()注:假设系统已作如下设置#include"44blib.h"#include"44b.h"#define_ISR_STARTADDRESS0xc7fff00//GCS6:16MbitDRAM/SDRAM#definerPCONG(*(volatileunsigned
3、*)0x1d20040)#definerPDATG(*(volatileunsigned*)0x1d20044)#definerPUPG(*(volatileunsigned*)0x1d20048)#definerEXTINT(*(volatileunsigned*)0x1d20050)#definerEXTINTPND(*(volatileunsigned*)0x1d20054)#definerPCONC(*(volatileunsigned*)0x1d20010)#definerPDATC(*(volatileunsi
4、gned*)0x1d20014)#definerPUPC(*(volatileunsigned*)0x1d20018)#definepISR_TIMER0(*(unsigned*)(_ISR_STARTADDRESS+0x78))#definepISR_EINT4567(*(unsigned*)(_ISR_STARTADDRESS+0x74))#definerI_ISPC(*(volatileunsigned*)0x1e00024)(1)定时器Timer0初始化函数Timer0_init(){rTCFG0=TCFG0&~(
5、0xff)
6、199;//设置Timer0的prescaler值(rTCFG0[0:0])为199rTCFG1=TCFG1&~0b1111
7、0b0100;//设置Timer0的DIV值(rTCFG1[3:0])为1/32rTCNT0=50000;//手工装载定时器的初值rTCMP0=10000;//手工装载比较寄存器初值,占空比20%rTCNTB0=50000;//设置定时器缓冲器初值rTCMPB0=10000;//设置比较缓冲寄存器初值,占空比20%rTCON
8、=0b01110;//设置设置Timer0(rTCON[4:0
9、])不使能死区,自动重载,不反转输出,手动更新,停止定时器}(2)GPIO端口的初始化函数Port_init(){//PORT_B口配置LED灯rPCONB=rPCONB&~(1<<4)
10、(1<<5);//设置端口BPCONB[5]=1,BPCONB[4]=1(输出)//PORT_G口配置外部中断rPCONG=0xffff;//功能3EINT7~0rPUPG=0x0;//写0设置端口G外的外接上拉电阻rEXTINT=rEXTINT
11、0x22220020;//EINT4567下降沿触发rEXTINTPND=0xf;//写1清
12、除外部中断挂起寄存器//PORT_E口配置定时器Timer0rPCONE=rPCONB&(~(0b11<<6)
13、(0b10<<6));//设置端口E第PE3位为功能2(PCONE[7:6]=10)(TOUT0)rPUPE
14、=~(0x1<<3);//写0设置端口E第PE3(rPUPE[3])外接上拉电阻}(3)中断配置初始化函数Int_init(){rI_ISPC=0x3ffffff;//写1清除中断挂起寄存器rINTMOD=0x0;//均为IRQ中断模式rINTCON=0x1;//IRQ相量模式,允许IRQ中断,禁止FIQ
15、中断rINTMSK
16、=~(0x1<<26
17、0x1<<21
18、0x1<<13);//写0开启全局屏蔽位(rINTMSK[26]),EINT4567屏蔽位(rINTMSK[21]),定时器Timer0屏蔽位(rINTMSK[13])//设置外部中断服务程序入口地址pISR_EINT4567=(int)EINT