1、若设计时选用了GPE0GPE3来输出键盘行扫描信号,选用GPD0GPD2来输入键盘列信号。请补充完善下面的键盘扫描函数: /*keyoutput 是键盘扫描时的输出地址,keyinput是键盘读入时的地址 #define KEYOUTPUT (*(volatile INT8U *)0x56000044) /定义GPE的数据端 #define KEYINPUT (*(volatile INT8U *)0x56000034) /定义GPD的数据端 INT16U ScanKey() INT16U key=0xFFFF; INT16U i; INT8U temp=0xFF,output; rGPDCO
2、N= rGPDCON & _【13】_; /初始化GPD0GPD2为输入 rGPECON= (rGPECON & _【14】_)|0x00000055); /初始化GPE0GPE3为输出; for (i=1;( i0); i=1) output |= 0xFF; output &= (i); KEYOUTPUT=output; temp = KEYINPUT; if (temp&0x07)!= _【16】_) key = (i); key = 8; key |= (temp&0x07)|0xF8); return (key); return 0xFFFF;上面的键盘扫描函数返回的是由键盘行信号
3、和键盘列信号合并而成的一个16位二进制值,根据该函数的返回值,可以判断是否有按键按下,并可确定是哪个按键按下。若返回值为 _【17】_时,可知键盘中无键按下,若返回值为 _【18】_时,可知键盘中第3行第2列的键被按下。(注:以GPE0对应的键盘行为第一行,以GPD0对应的键盘列为第一列)(6)为了便于以太网通信程序的编写,客房指纹锁的应用软件基于C/OS-II操作系统来设计,客房指纹锁的应用程序主函数中,需要用OSTaskCreate()函数 _【19】_,并用 _【20】_函数启动多任务调度功能。说明:下面是试题解答时需要用到的寄存器格式及相关说明。1)端口C的控制寄存器(GPCCON)
4、引脚 GPCCON的位 描述 GPC15 31:30 00=输入,01=输出,10=VD7,11=保留 GPC14 29:28 00=输入,01=输出,10= VD6,11=保留 GPC13 27:26 00=输入,01=输出,10= VD5,11=保留 GPC12 25:24 00=输入,01=输出,10= VD4,11=保留 GPC11 23:22 00=输入,01=输出,10= VD3,11=保留 GPC10 21:20 00=输入,01=输出,10= VD2,11=保留 GPC9 19:18 00=输入,01=输出,10= VD1,11=保留 GPC8 17:16 00=输入,01=输
5、出,10= VD0,11=保留 GPC7 15:14 00=输入,01=输出,10=LCDVF2,11=保留 GPC6 13:12 00=输入,01=输出,10= LCDVF1,11=保留 GPC5 11:10 00=输入,01=输出,10=LCDVF0,11=保留 GPC4 9:8 00=输入,01=输出,10=VM,11=IIS数据输出 GPC3 7:6 00=输入,01=输出,10=VFRAME,11= IIS数据输入 GPC2 5:4 00=输入,01=输出,10=VLINE,11=保留 GPC1 3:2 00=输入,01=输出,10=VCLK,11=保留 GPC0 1:0 00=输入
6、,01=输出,10=LEND,11=保留2)端口D的控制寄存器(GPDCON) GPDCON的位 GPD15 00=输入,01=输出,10=VD23,11=保留 GPD14 00=输入,01=输出,10= VD22,11=保留 GPD13 00=输入,01=输出,10= VD21,11=保留 GPD12 00=输入,01=输出,10= VD20,11=保留 GPD11 00=输入,01=输出,10= VD19,11=保留 GPD10 00=输入,01=输出,10= VD18,11=保留 GPD9 00=输入,01=输出,10= VD17,11=保留 GPD8 00=输入,01=输出,10= V
7、D16,11=保留 GPD7 00=输入,01=输出,10= VD15,11=保留 GPD6 00=输入,01=输出,10= VD14,11=保留 GPD5 00=输入,01=输出,10= VD13,11=保留 GPD4 00=输入,01=输出,10= VD12,11=保留 GPD3 00=输入,01=输出,10= VD11,11=保留 GPD2 00=输入,01=输出,10= VD10,11=保留 GPD1 00=输入,01=输出,10= VD9,11=保留 GPD0 00=输入,01=输出,10= VD8,11=保留3)端口E的控制寄存器(GPECON) GPECON的位 GPE15 00
8、=输入,01=输出,10=IICSDA,11=保留 GPE14 00=输入,01=输出,10=IICSCL,11=保留 GPE13 00=输入,01=输出,10=SPICLK0,11=保留 GPE1200=输入,01=输出,10=SPIMOSI0,11=保留 GPE11 00=输入,01=输出,10=SPIMISO0,11=保留 GPE10 00=输入,01=输出,10=SSDAT3,11=保留 GPE9 00=输入,01=输出,10=SSDAT2,11=保留 GPE8 00=输入,01=输出,10=SSDAT1,11=保留 GPE7 00=输入,01=输出,10=SSDAT0,11=保留 G
9、PE6 00=输入,01=输出,10=SDCMD,11=保留 GPE5 00=输入,01=输出,10=SDLCK,11=保留 GPE4 00=输入,01=输出,10=IISSDO,11=IIS数据输出 GPE3 00=输入,01=输出,10=IISSI,11= IIS数据输入 GPE2 00=输入,01=输出,10=CDCLK,11=保留 GPE1 00=输入,01=输出,10=IISCLK,11=保留 GPE0 00=输入,01=输出,10=IISLRCK,11=保留 4)端口H的控制寄存器(GPHCON) GPHCON的位 GPH10 00=输入,01=输出,10=CLKOUT1,11=保
10、留 GPH9 00=输入,01=输出,10= CLKOUT0,11=保留 GPH8 00=输入,01=输出,10=UEXTCLK,11=保留 GPH7 00=输入,01=输出,10=RXD2,11=保留 GPH6 00=输入,01=输出,10=TXD2,11=保留 GPH5 00=输入,01=输出,10=RXD1,11=保留 GPH4 00=输入,01=输出,10=TXD1,11=IIS数据输出 GPH3 00=输入,01=输出,10=RXD0,11= IIS数据输入 GPH2 00=输入,01=输出,10=TXD0,11=保留 GPH1 00=输入,01=输出,10=nRTS0,11=保留
11、GPH0 00=输入,01=输出,10=nCTS0,11=保留 第二套数为 _【8】_。软件设计时,设计了如下的Timer0初始化函数,请补充完善。下面程序中、用8位十六进制数表示,用4位十六进制数表示)void Timer0Int(void) /设置定时器配置寄存器0(TCFG0)rTCFG0= _【9】_; /Timer0预分频系数选择为3,该寄存器中其它无关位均为0 /设置定时器配置寄存器1(TCFG1)rTCFG1= _【10】_; / Timer0分频器值为16,该寄存器中其它无关位均为0 /设置计数常数rTCNTB0= _【11】_; /设置控制寄存器TCON rTCON= _【1
12、2】_;/更新TCNTB0和TCMPB0,该寄存器中其它无关位均为0 rTCON=0x00000009;/设置Timer0自动装载,并启动(5)彩色LCD显示屏的硬件接口电路由S3C2410的专用GPIO端口 _【13】_和端口 _【14】_相关引脚配以驱动电路来设计。软件设计时,需要通过设置它们控制寄存器的值分别为 _【15】_和 _【16】_来确定它们的引脚功能。(6)系统的软件可以设计为在无操作系统的环境下运行。设计者自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的IRQ异常所对应的异常向量地址为 _【17】_。Timer
13、0部件所产生的0.01秒基准时间到时将引起IRQ异常。由于IRQ异常向量地址与下一个异常向量地址之间间隔为 _【18】_个字节,因此,通常在IRQ异常向量地址处设计一条转移指令。堆栈指针的设置需按工作模式来进行。设置IRQ模式下的堆栈指针,需在R0清0后用指令ORRR1,R0,#0x12| _【19】_和MSR CPSR_CXSF,R1来使CPU核进入IRQ模式,然后再给SP寄存器赋值作为该模式下的堆栈指针。这些初始化工作完成后,即可通过指令 _【20】_来引导应用程序的主函数main()。1) 端口C的控制寄存器(GPCCON)引脚GPCCON的位描述GPC1531:00=输入,01=输出,
14、10=VD7,11=保留GPC1429:00=输入,01=输出,10= VD6,11=保留GPC1327:00=输入,01=输出,10= VD5,11=保留GPC1225:00=输入,01=输出,10= VD4,11=保留GPC1123:00=输入,01=输出,10= VD3,11=保留GPC1021:00=输入,01=输出,10= VD2,11=保留GPC919:00=输入,01=输出,10= VD1,11=保留GPC817:00=输入,01=输出,10= VD0,11=保留GPC715:00=输入,01=输出,10=LCDVF2,11=保留GPC613:00=输入,01=输出,10= LC
15、DVF1,11=保留GPC511:00=输入,01=输出,10=LCDVF0,11=保留GPC49:00=输入,01=输出,10=VM,11=IIS数据输出GPC37:00=输入,01=输出,10=VFRAME,11= IIS数据输入GPC25:00=输入,01=输出,10=VLINE,11=保留GPC13:00=输入,01=输出,10=VCLK,11=保留GPC01:00=输入,01=输出,10=LEND,11=保留2) 端口D的控制寄存器(GPDCON)GPDCON的位GPD1500=输入,01=输出,10=VD23,11=保留GPD1400=输入,01=输出,10= VD22,11=保留
16、GPD1300=输入,01=输出,10= VD21,11=保留GPD1200=输入,01=输出,10= VD20,11=保留GPD1100=输入,01=输出,10= VD19,11=保留GPD1000=输入,01=输出,10= VD18,11=保留GPD900=输入,01=输出,10= VD17,11=保留GPD800=输入,01=输出,10= VD16,11=保留GPD700=输入,01=输出,10= VD15,11=保留GPD600=输入,01=输出,10= VD14,11=保留GPD500=输入,01=输出,10= VD13,11=保留GPD400=输入,01=输出,10= VD12,1
17、1=保留GPD300=输入,01=输出,10= VD11,11= 保留GPD200=输入,01=输出,10= VD10,11=保留GPD100=输入,01=输出,10= VD9,11=保留GPD000=输入,01=输出,10= VD8,11=保留3) 端口E的控制寄存器(GPECON)GPECON的位GPE1500=输入,01=输出,10=IICSDA,11=保留GPE1400=输入,01=输出,10=IICSCL,11=保留GPE1300=输入,01=输出,10=SPICLK0,11=保留GPE1200=输入,01=输出,10=SPIMOSI0,11=保留GPE1100=输入,01=输出,1
18、0=SPIMISO0,11=保留GPE1000=输入,01=输出,10=SSDAT3,11=保留GPE900=输入,01=输出,10=SSDAT2,11=保留GPE800=输入,01=输出,10=SSDAT1,11=保留GPE700=输入,01=输出,10=SSDAT0,11=保留GPE600=输入,01=输出,10=SDCMD,11=保留GPE500=输入,01=输出,10=SDLCK,11=保留GPE400=输入,01=输出,10=IISSDO,11=IIS数据输出GPE300=输入,01=输出,10=IISSI,11= IIS数据输入GPE200=输入,01=输出,10=CDCLK,11
19、=保留GPE100=输入,01=输出,10=IISCLK,11=保留GPE000=输入,01=输出,10=IISLRCK,11=保留4) 端口H的控制寄存器(GPHCON)GPHCON的位GPH1000=输入,01=输出,10=CLKOUT1,11=保留GPH900=输入,01=输出,10= CLKOUT0,11=保留GPH800=输入,01=输出,10=UEXTCLK,11=保留GPH700=输入,01=输出,10=RXD2,11=保留GPH600=输入,01=输出,10=TXD2,11=保留GPH500=输入,01=输出,10=RXD1,11=保留GPH400=输入,01=输出,10=TX
20、D1,11=IIS数据输出GPH300=输入,01=输出,10=RXD0,11= IIS数据输入GPH200=输入,01=输出,10=TXD0,11=保留GPH100=输入,01=输出,10=nRTS0,11=保留GPH000=输入,01=输出,10=nCTS0,11=保留5) UART线路控制寄存器(ULCONn n可以是0、1、2)ULCONn的位763 21保留 值为0确定红外模式 0正常操作模式 1正常操作模式确定校验类型 0xx=无校验 100奇校验 101偶校验确定停止位数 0=1位停止位 1=2位停止位确定数据位 005位016位 107位118位6) TCFG0寄存器TCFG0
21、的位功能描述初始状态值保留0x00在此不用确定Timer2,Timer3,Timer4的预分频系数确定Timer0,Timer1的预分频系数7) TCFG1寄存器TCFG1的位0b0000确定Timer4的分频器值 00002 0001=4 0010=8 0011=16确定Timer3的分频器值 00002 0001=4 0010=8 0011=16确定Timer2的分频器值 00002 0001=4 0010=8 0011=16确定Timer1的分频器值 00002 0001=4 0010=8 0011=16确定Timer0的分频器值 00002 0001=4 0010=8 0011=160b00
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1