基于ARM嵌入式系统接口技术课程设计报告.docx
- 文档编号:28908682
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:46
- 大小:417.01KB
基于ARM嵌入式系统接口技术课程设计报告.docx
《基于ARM嵌入式系统接口技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《基于ARM嵌入式系统接口技术课程设计报告.docx(46页珍藏版)》请在冰豆网上搜索。
基于ARM嵌入式系统接口技术课程设计报告
基于ARM嵌入式系统接口技术
课程设计报告
课程设计题目:
实时时钟设计
学院:
计算机科学与技术学院
班级:
计算机09-1班
学号:
姓名:
指导老师:
微型计算机系统与接口技术
课程设计
设计时间:
2011年12月19日至2011年12月23日
设计环境
1.硬件环境:
计算机,EV44B0II实验台
2.软件环境:
Jediview集成开发环境
一、基本功能:
利用S3C44BOX的RTC和实验箱上的LCD液晶、4*4小键盘设计一个实时时钟。
1.在LCD上显示当前日期及时间。
可按如下格式显示:
2.利用4*4小键盘校时
校时时LCD的相应位置要有光标提示。
二、定时报警功能
通过小键盘设定报警时刻,报警时刻到,则在LCD上显示(各自不同的)报警图像。
三、步骤:
1.掌握预备知识:
a.液晶显示
b.键盘译码
c.掌握S3C44BO芯片RTC的使用方法
2.设计:
a.实现RTC实时时钟功能
b.显示实时时钟界面
c.实现校时功能
d.上机调试,运行,验收
e.实现定时报警功能
四、硬件接口逻辑图
电路连接图
五、程序代码
(1)44binits
/********************************************************
*NAME:
44BINIT.S*
*Version:
10.JAn.2003*
*Description:
*
*Cstartupcodes*
*Configurememory,InitializeISR,stacks*
*InitializeC-variables*
*Fillzerosintozero-initializedC-variables*
*******************************************************/
//#include"arm.h"
.globl_start
_start:
bResetHandler//fordebug
bHandlerUndef//handlerUndef
bHandlerSWI//SWIinterrupthandler
bHandlerPabort//handlerPAbort
bHandlerDabort//handlerDAbort
b.//handlerReserved
bIsrIRQ
bHandlerFIQ
//***IMPORTANTNOTE***
//IftheH/Wvectoredinterrutpmodeisenabled,Theabovetwoinstructionsshould
//bechangedlikebelow,towork-aroundwithH/WbugofS3C44B0Xinterruptcontroller.
ldrpc,=HandlerEINT0//mGAH/Winterruptvectortable
ldrpc,=HandlerEINT1//
ldrpc,=HandlerEINT2//
ldrpc,=HandlerEINT3//
ldrpc,=HandlerEINT4567//
ldrpc,=HandlerTICK//mGA
b.
b.
ldrpc,=HandlerZDMA0//mGB
ldrpc,=HandlerZDMA1//
ldrpc,=HandlerBDMA0//
ldrpc,=HandlerBDMA1//
ldrpc,=HandlerWDT//
ldrpc,=HandlerUERR01//mGB
b.
b.
ldrpc,=HandlerTIMER0//mGC
ldrpc,=HandlerTIMER1//
ldrpc,=HandlerTIMER2//
ldrpc,=HandlerTIMER3//
ldrpc,=HandlerTIMER4//
ldrpc,=HandlerTIMER5//mGC
b.
b.
ldrpc,=HandlerURXD0//mGD
ldrpc,=HandlerURXD1//
ldrpc,=HandlerIIC//
ldrpc,=HandlerSIO//
ldrpc,=HandlerUTXD0//
ldrpc,=HandlerUTXD1//mGD
b.
b.
ldrpc,=HandlerRTC//mGKA
b.//
b.//
b.//
b.//
b.//mGKA
b.
b.
ldrpc,=HandlerADC//mGKB
b.//
b.//
b.//
b.//
b.//mGKB
b.
b.
/*0xe0=EnterPWDN*/
ldrpc,=EnterPWDN
HandlerFIQ:
.wordHandleFIQ
HandlerIRQ:
.wordHandleIRQ
HandlerUndef:
.wordHandleUndef
HandlerSWI:
.wordHandleSWI
HandlerDabort:
.wordHandleDabort
HandlerPabort:
.wordHandlePabort
HandlerADC:
.wordHandleADC
HandlerRTC:
.wordHandleRTC
HandlerUTXD1:
.wordHandleUTXD1
HandlerUTXD0:
.wordHandleUTXD0
HandlerSIO:
.wordHandleSIO
HandlerIIC:
.wordHandleIIC
HandlerURXD1:
.wordHandleURXD1
HandlerURXD0:
.wordHandleURXD0
HandlerTIMER5:
.wordHandleTIMER5
HandlerTIMER4:
.wordHandleTIMER4
HandlerTIMER3:
.wordHandleTIMER3
HandlerTIMER2:
.wordHandleTIMER2
HandlerTIMER1:
.wordHandleTIMER1
HandlerTIMER0:
.wordHandleTIMER0
HandlerUERR01:
.wordHandleUERR01
HandlerWDT:
.wordHandleWDT
HandlerBDMA1:
.wordHandleBDMA1
HandlerBDMA0:
.wordHandleBDMA0
HandlerZDMA1:
.wordHandleZDMA1
HandlerZDMA0:
.wordHandleZDMA0
HandlerTICK:
.wordHandleTICK
HandlerEINT4567:
.wordHandleEINT4567
HandlerEINT3:
.wordHandleEINT3
HandlerEINT2:
.wordHandleEINT2
HandlerEINT1:
.wordHandleEINT1
HandlerEINT0:
.wordHandleEINT0
/*Oneofthefollowingtworoutinescanbeusedfornon-vectoredinterrupt.*/
IsrIRQ:
//usingI_ISPRregister.
stmdbr13!
{r0-r8,r12,r14}
blIRQ
ldmiar13!
{r0-r8,r12,r14}
subspc,r14,#0x4
IRQ:
subsp,sp,#4//reservedforPC
stmfdsp!
{r8-r9}
ldrr9,I_ISPR
ldrr9,[r9]
movr8,#0x0
F0:
movsr9,r9,lsr#1
bcsF1
addr8,r8,#4
bF0
F1:
ldrr9,HandleADC
addr9,r9,r8
ldrr9,[r9]
strr9,[sp,#8]
ldmfdsp!
{r8-r9,pc}
/*****************************************************
*START*
*****************************************************/
ResetHandler:
ldrr0,WTCON//watchdogdisable
ldrr1,=0x0
strr1,[r0]
ldrr0,INTMSK
ldrr1,MASKALL//allinterruptdisable
strr1,[r0]
/*****************************************************
*Setclockcontrolregisters*
*****************************************************/
ldrr0,LOCKTIME
ldrr1,=800//count=t_lock*Fin(t_lock=200us,Fin=4MHz)=800
strr1,[r0]
ldrr0,PLLCON//temporarysettingofPLL
ldrr1,PLLCON_DAT//Fin=10MHz,Fout=40MHz
strr1,[r0]
ldrr0,CLKCON
ldrr1,=0x7ff8//AllunitblockCLKenable
strr1,[r0]
/*****************************************************
*Setmemorycontrolregisters*
*****************************************************/
adrr0,SMRDATA
ldmiar0,{r1-r13}
ldrr0,=0x01c80000//BWSCONAddress
stmiar0,{r1-r13}
/****************************************************
*Initializestacks*
*****************************************************/
ldrsp,SVCStack//Why?
blInitStacks
/*****************************************************
*SetupIRQhandler*
*****************************************************/
ldrr0,HandleIRQ//Thisroutineisneeded
ldrr1,IsrIRQ//ifthereisn't'subspc,lr,#4'at0x18,0x1c
strr1,[r0]
BLMain//Don'tusemain()because......
B.
/*****************************************************
Thefunctionforinitializingstack*
/*****************************************************/
InitStacks:
//Don'tuseDRAM,suchasstmfd,ldmfd......
//SVCstackisinitializedbefore
//Undertoolkitver2.50,'msrcpsr,r1'canbeusedinsteadof'msrcpsr_cxsf,r1'
mrsr0,cpsr
bicr0,r0,#0X1F
orrr1,r0,#0xDB//UNDEFMODE|NOINT
msrcpsr,r1//UndefMode
ldrsp,UndefStack
orrr1,r0,#0XD7//ABORTMODE|NOINT
msrcpsr,r1//AbortMode
ldrsp,AbortStack
orrr1,r0,#0XD2//IRQMODE|NOINT
msrcpsr,r1//IRQMode
ldrsp,IRQStack
orrr1,r0,#0XD1//FIQMODE|NOINT
msrcpsr,r1//FIQMode
ldrsp,FIQStack
bicr0,r0,#0XDF//MODEMASK|NOINT
orrr1,r0,#0X13
msrcpsr,r1//SVCMode
ldrsp,SVCStack
//USERmodeisnotinitialized.
movpc,lr//TheLRregistermaybenotvalidforthemodechanges.
/*****************************************************
*Thefunctionforenteringpowerdownmode*
*****************************************************/
/*voidEnterPWDN(intCLKCON)*/
EnterPWDN:
movr2,r0//r0=CLKCON
ldrr0,REFRESH
ldrr3,[r0]
movr1,r3
orrr1,r1,#0x400000//self-refreshenable
strr1,[r0]
nop//Waituntilself-refreshisissued.Maynotbeneeded.
nop//Iftheotherbusmasterholdsthebus,...
nop//movr0,r0
nop
nop
nop
nop
/*enterPOWERDNmode*/
ldrr0,CLKCON
strr2,[r0]
/*waituntilenterSL_IDLE,STOPmodeanduntilwake-up*/
movr0,#0xff
B0:
subsr0,r0,#1
bneB0
/*exitfromDRAM/SDRAMselfrefreshmode.*/
ldrr0,REFRESH
strr3,[r0]
movpc,lr
SMRDATA:
/******************************************************************
*Memoryconfigurationhastobeoptimizedforbestperformance*
*Thefollowingparameterisnotoptimized.*
******************************************************************/
/****memoryaccesscycleparameterstrategy***
//1)EvenFP-DRAM,EDOsettinghasmorelatefetchpointbyhalf-clock
//2)Thememorysettings,here,aremadethesafeparametersevenat66Mhz.
//3)FP-DRAMParameters:
tRCD=3fortRAC,tcas=2forpaddelay,tcp=2forbusload.
//4)DRAMrefreshrateisfor40Mhz.*/
.long0x11110090//Bank0=OM[1:
0],Bank1~Bank7=16bit,bank2=8bit//
.long0X600//GCS0
.long0X7bc0//GCS1
.long0X7fc0//GCS2
.long0X7ffc//GCS3
.long0X7ffc//GCS4
.long0X7ffc//GCS5
.long0X18000//GCS6
.long0X18000//GCS7
.long0x820591//REFRESHRFEN=1,TREFMD=0,trp=3clk,trc=5clk,tchr=3clk,count=1019
.long0x16//SCLKpowermode,BANKSIZE32M/32M
.long0x20//MRSR6CL=2clk
.long0x20//MRSR7
UserStack:
.word0xc7ffa00
SVCStack:
.word0xc7ffb00
UndefStack:
.word0xc7ffc00
AbortStack:
.word0xc7ffd00
IRQStack:
.word0xc7ffe00
FIQStack:
.word0xc7fff00
HandleReset:
.word0xc7fff00
HandleUndef:
.word0xc7fff04
HandleSWI:
.word0xc7fff08
HandlePabort:
.word0xc7fff0c
HandleDabort:
.word0xc7fff10
HandleReserved:
.word0xc7fff14
HandleIRQ:
.word0xc7fff18
HandleFIQ:
.word0xc7fff1c
//Don'tusethelabel'IntVectorTable',
//becausearmasm.execann'trecognizethislabelcorrectly.
//thevalueisdifferentwithanaddressyouthinkitmaybe.
//IntVectorTable
HandleADC:
.word0xc7fff20
HandleRTC:
.word0xc7fff24
HandleUTXD1:
.word0xc7fff28
HandleUTXD0:
.word0xc7fff2c
HandleSIO:
.word0xc7fff30
HandleIIC:
.word0xc7fff34
HandleURXD1:
.word0xc7fff38
HandleURXD0:
.word0xc7fff3c
HandleTIMER5:
.word0xc7fff40
HandleTIMER4:
.word0xc7fff44
HandleTIMER3:
.word0xc7fff48
HandleTIMER2:
.word0xc7fff4c
HandleTIMER1:
.word0xc7fff50
HandleTIMER0:
.word0xc7fff54
HandleUERR01:
.word0xc7fff58
HandleWDT:
.word0xc7fff5c
HandleBDMA1:
.word0xc7fff60
HandleBDMA0:
.word0xc7fff64
HandleZDMA1:
.word0xc7fff68
HandleZDMA0:
.word0xc7fff6c
HandleTICK:
.word0xc7fff70
HandleEINT4567:
.word0xc7fff74
HandleEINT3:
.word0xc7fff78
HandleEINT2:
.word0xc7fff7c
HandleEINT1:
.word0xc7fff80
HandleEINT0:
.word0xc7fff84
/*someparametersfortheboard*/
/*InterruptControl*/
INTPND:
.long0x01e00004
INTMOD:
.long0x01e00008
INTMSK:
.long0x01e0000c
I_ISPR:
.long0x01e00020
I_CMST:
.long0x01e0001c
/*;Watchdogtimer*/
WTCON:
.long0x01d30000
/*;ClockController*/
PLLCON:
.long0x01d80000
CLKCON:
.long0x01d80004
LOCKTIME:
.long0x01d8000c
/*;MemoryController*/
REFRESH:
.long0x01c80024
/*;Pre-definedconstants*/
USERMODE:
.long0x10
FIQMODE:
.long0x11
IRQMODE:
.long0x12
SVCMODE:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 嵌入式 系统 接口 技术 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)