北理工嵌入式系统实验报告 - 图文 联系客服

发布时间 : 星期二 文章北理工嵌入式系统实验报告 - 图文更新完毕开始阅读efecd8962cc58bd63186bddc

项目,在Application/SRC/Main.c 中可以看到,主程序中,在进行目标板初始化 后,程序进入死循环,等待中断!在Startup2410/src/target.C 文件中包括对要 使用的中断控制器的初始化程序,CPU 响应了该中断后的中断服务子程序。 该项目的程序流程是,按下程序启动后,初始化定时器1,设定定时器的中断时 间,然后,等待定时器中断,当定时器中断到来时,就会进入定时器中断服务子程

序,而中断服务子程序会把LED1 和LED2 灯熄灭或点亮,从现象中看到LED1 和LED2 灯忽闪一次,则说明定时器发生了一次中断。最后,关闭中断请求,等待下一次的 EL - ARM - 830 实验指导书 63

中断的到来。为使CPU 响应中断,在中断服务子程序执行之前,必须打开ARM920T 的CPSR 中的I 位,以及相应的中断屏蔽寄存器中的位。

打开相应的中断屏蔽寄存器中的位,是在target.C 中的void Timer1INT_Init(void) 函数中,在做了这些准备后,就可以等待中断的到来了。 void Timer1INT_Init(void) { //定时器接口使能 if ((rINTPND & BIT_TIMER1)) { rSRCPND |= BIT_TIMER1; }

pISR_TIMER1 = (int)Timer1_ISR;

rINTMSK &= ~(BIT_TIMER1); //开中断; }

TIMER1INT_Init()函数已在Target_Init()中调用。

详见/实验程序/HARDWARE/ADS/实验六目录下的Interrupt.mcp 源代码注释。 七、实验步骤

1.本实验仅使用实验教学系统的核心CPU 板。在进行本实验时,LCD 电源开关,音频 的左右声道开关、AD 通道选择开关、触摸屏中断选择开关等均应处在关闭状态。 2.在PC 机并口和实验箱的CPU 板上的JTAG 接口之间,连接仿真调试电缆。 3.检查连接是否可靠,可靠后,接入电源线,系统上电。

4 . 打开ADS1.2 开发环境, 从里面打开\\ 实验程序\\HARDWARE\\ADS\\ 实验六 \\Interrupt.mcp 项目文件,进行编译。

5.编译通过后,进入ADS1.2 调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验六 \\Interrupt_Data\\Debug 中的映象文件程序映像Interrupt.axf。

6.在ADS 调试环境下全速运行映象文件。观察LED1 和LED2 的变化!LED1 和LED2 灯

会由于定时中断的1 秒钟发生一次,而一秒钟闪烁一次!也可以改变闪烁的频率,即改变 Startup2410\\target.c 文件内的void Timer1_init(void)函数里的rTCNTB1 = 48828;的

赋值,数字量越小,闪烁频率越快。编译全速运行,观看结果,看闪烁频率是否发生了改 变!这是对GPIO 口操作的结果。具体实现见程序。 八、实验总结

观察到实验所述现象,经过仔细阅读实验指导书,我们对ARM中断有了一个更为深入的了解。

10

实验十二

表2-12-5

对于STNLCD,需要设置下面几个位:

INVVCLK [10] STN/TFT:这个位设置VCLK活动边缘的极性 EL - ARM - 830 实验指导书 65

0 = 在VCLK下降沿视频数据被取走

11

1 =在VCLK上升沿视频数据被取走

INVVLINE [9] STN/TFT: 这个位设置行脉冲的极性 0 = Normal 1 = Inverted

INVVFRAME [8] STN/TFT: 这个位设置VFRAME脉冲的极性 0 = Normal 1 = Inverted

INVVD [7] STN/TFT: 这个位设置VD (video data)脉冲的极性 0 = Normal

1 = VD is inverted.

INVPWREN [5] STN/TFT: 这个位设置PWREN信号的极性 0 = Normal 1 = Inverted

BSWP [1] STN/TFT: 字节交换控制位 0 = Swap Disable 1 = Swap Enable

HWSWP [0] STN/TFT: 半字交换控制位 0 = Swap Disable 1 = Swap Enable

表2-12-6 为LCD 的帧缓冲区开始地址寄存器1 的的配置说明。

表2-12-6

EL - ARM - 830 实验指导书 66

LCDBANK: [29:21] 指示视频缓冲区在系统存储器的段地址A[30:22] LCDBANK 在视点移动时不能变化, LCD 帧缓冲区应当与4M 区 域对齐,因此在分配存储区应当注意

LCDBASEU: [20:0] 指示帧缓冲区或在双扫描LCD 时的高帧缓冲区的开始地址 A[21:1] 注:

1. LCDBANK 在ENVID=1 时不能变化.

2. 如果LCDBASEU,LCDBASEL 在ENVID=1 时变化,新的量将在下一帧起作用, 表2-12-7 为LCD的帧缓冲区开始地址寄存器2的的配置说明。

12

表 2-12-7

LCDBASEL [20:0] 指示在使用双扫描LCD 时的低帧存储区的开始地址A[21:1] 公式如下: LCDBASEL =LCDBASEU + (PAGEWIDTH + OFFSIZE) x (LINEVAL +1) 注:用户通过改变LCDBASEU 和LCDBASEL 的值来滚动屏幕,但在帧结束时,不能改

变LCDBASEU 和LCDBASEL的值,因为预取下一帧的数据优先于改变帧,如果这时改变帧, 预取的数据将无效和将显示不正确.为了检查LINECNT,中断应当被屏蔽,否则如果在 读LINECNT 后,任意中断刚好执行,因为ISR 的执行,LINECNT 的值可能是旧的。 表 2-12-8 为LCD 的帧缓冲区开始地址寄存器3 的的配置说明。它主要是进行虚 拟屏幕地址设置。

OFFSIZE: [21:11] 虚拟屏幕偏移量(半字的数量),该值定义前一显示行的最后 的半字和新的显示一行首先的半字之间的距离

PAGEWIDTH: [10:0] 虚拟屏幕宽度(半字的数量),该值定义帧的观察区域的宽度 注: PAGEWIDTH 和OFFSIZE 必须在ENVID = 0 时变 EL - ARM - 830 实验指导书 67

表 2-12-8

表2-12-9为LCD的RGB查找表寄存器3的的配置说明。在这三个寄存器中,我们要 设定使用的8种红色,8种绿色,4种蓝色。

13