资源描述:
《三 嵌入式系统应用开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课件版本:200602嵌入式系统应用开发技术田大鸣tdm189@qdu.edu.cn嵌入式系统应用开发技术第三章 嵌入式硬件平台嵌入式硬件结构嵌入式处理器片内周边电路基本外围电路外设编程示例引导程序设置BCU中断处理程序设置8位定时器设置串口引导程序S1C33程序至少需要一个向量表和一道引导程序。正常情况下,程序引导地址存放在起始地址为0xC00000的复位向量中。程序由0xC00000开始执行。最简单的程序.abs;定位命令.org0xC00000.code.wordBOOT;向量表BOOT:xld.w%r8,0x800;引导程序ld.w%sp,%r
2、8;设置堆栈xcallmain;调用主程序.Word专门用于定义向量,如:.wordBOOT;引导.wordRESET;复位.wordNMI;不可屏蔽中断.wordSOFTINT0;软中断0.wordSOFTINT1;软中断1.wordINT0;中断0.wordINT1;中断1中断向量的重定义为便于编程理解,对中断向量重定义,如:#defineRESETBOOT#defineINT12int_16timer_u00#defineINT15int_16timer_c01#defineINT18int_16timer_u11#defineINT23int_16
3、timer_u21#defineINT27int_16timer_u31一般引导程序#include"..bcudrv_bcu.h";;设置栈顶#defineSP_TOP0x07ff;内部RAM;;全局指针#defineGP_ADDR0x0000;0x0.code定义部分:.globalBOOTBOOT:xld.w%r8,SP_TOPld.w%sp,%r8;设置堆栈指针xld.w%r8,GP_ADDR;设置全局指针xcall_init_bcu;引导时初始化BCUxcall_init_sys;初始化仿真I/Oxcallmain;转到主程序xcall_ex
4、it;转到_exit(Loop)程序部分设置BCUS1C33对存储器和设备的访问要通过BCU,因此必须预先设置。程序段.global_init_bcu_init_bcu:;;设置区域9~10;;设备大小:16位,输出显示延迟1.5;;等待控制2xld.w%r5,BCU_A10_ADDRxld.w%r4,BCU_BW_0
5、BCU_DRAH_NOT
6、BCU_DRAL_NOT
7、BCU_SZL_16
8、BCU_DFL_15
9、BCU_WTL_2ld.h[%r5],%r4ret完整设置对BCU的设置可能会包含以下内容:BCLK输出BurstROMDRAMSRAMArea
10、4~18Prescaler8位定时器重载数据……程序段xld.w%r5,PRESC_P8TS0_P8TS1_ADDRxld.w%r4,PRESC_PTONL_ON
11、PRESC_CLKDIVL_SEL0;设置8位定时器的Prescalerld.b[%r5],%r48位定时器0的可编程时钟产生器:xld.w%r4,0xA0;重载数据;运行/停止寄存器xld.w%r5,T8P_PTRUN0_ADDRextT8P_RLD0_ADDR-T8P_PTRUN0_ADDRld.b[%r5],%r48位定时器0的重载数据:中断处理程序中断处理程序不同于一般程序的编写:主要体
12、现在寄存器的保存和恢复上。16位定时器溢出中断.globalint_16timer_u00int_16timer_u00:;16位定时器中断向量pushn%r15;压栈xld.w%r12,T16P_TC30_ADDR;16位定时器3计数器数据寄存器地址xcallread_16timer_cnt读出16位定时器3计数器数据,停止16位定时器0:;16位定时器3计数器数据xld.w[timer00],%r10xld.w%r12,T16P_PRUN00_ADDRxcallstop_16timer;16位定时器0运行/停止寄存器地址ld.w%r4,0x01;打开1
13、6位定时器0中断标记xld.w[t16int00_flg],%r4xld.w%r5,INT_F16T0_F16T1_ADDR;中断因子寄存器地址xld.w%r4,INT_F16TU00;中断因子寄存器标记复位ld.b[%r5],%r4popn%r15;弹栈reti;恢复执行过程使用pushn%15将所有通用寄存器之值压栈写中断处理代码使用popn%15弹出所有通用寄存器之值使用reti返回中断前状态该中断程序执行前,CPU保存PC与PSR算术操作寄存器当使用了AHR和ALR时,必须保存:pushn%r15;压栈ld.w%r0,%ahrld.w%r1,%al
14、rpushn%r1;压栈……popn%r1;弹栈ld.w%ahr,