基于物联网的安保系统软件设计-测控模块_毕业论文 下载本文

西安欧亚学院本科毕业论文(设计)

5.3 系统初化设计

(1) 程序流程图

图5-2 系统初始化

(2) 程序源代码 void system_init() {

/*VPB分频系数配置*/

PLLCON=1; //PLL使能(开启)

#if((Fcclk/4)/Fpclk)==1 //VPB总线时钟为处理器时钟的1/4时 VPBDIV=0; //VPB分频器设置为0 #endif

#if((Fcclk/4)/Fpclk)==2 //VPB总线时钟为处理器时钟的1/2时 VPBDIV=2; //VPB分频器设置为2 #endif

#if((Fcclk/4)/Fpclk)==4 //VPB总线时钟与处理器时钟相同 VPBDIV=1; //VPB分频器设置为1 #endif

/*PLL 倍频/分频值自动配置*/

25

西安欧亚学院本科毕业论文(设计)

#if(Fcco/Fcclk)==2 //流控振荡频率是系统频率的2倍时 PLLCFG=((Fcclk/Fosc)-1)|(0<<5); //PLLCFG配置寄存器,4:0 PLL倍频器值,6:3 分频器值。

#endif

#if(Fcco/Fcclk)==4

PLLCFG=((Fcclk/Fosc)-1)|(1<<5); #endif

#if(Fcco/Fcclk)==8

PLLCFG=((Fcclk/Fosc)-1)|(2<<5); #endif

#if (Fcco/Fcclk)==16

PLLCFG=((Fcclk/Fosc)-1)|(3 << 5); #endif

PLLFEED=0xaa; //PLL馈送寄存器使PLLCOM/PLLCFG的值更改生效。

PLLFEED=0x55;

while((PLLSTAT&(1<<10))==0); //等待PLL锁存

PLLCON=3; //将PLL作为时钟源连接到微控制器。 PLLFEED=0xaa; PLLFEED=0x55; //存储器加速配置 MAMCR=0; #if Fcclk<20000000 MAMTIM=1; #else

#if Fcclk<40000000 MAMTIM=2; #else

MAMTIM=3; #endif #endif

MAMCR=2;

//VIC初始化 VICIntSelect=0;

26

西安欧亚学院本科毕业论文(设计)

VICIntEnClear=0xFFFFFFFF; VICSoftIntClear=0xFFFFFFFF; VICProtection=0; VICVectAddr=0; VICDefVectAddr=0; }

5.4 UARTO初始化

(1) 程序流程图

图5-3 程序流程图

(2) 程序源代码 void uart0_init() {

uint32 baud=115200;

U0LCR=0x83; //数据格式设置(字长、停止位、奇偶选择/校验位)/除数锁存器访问使能。

U0DLM=((Fpclk/16)/baud)/256; //除数锁存器高字节计算。 U0DLL=((Fpclk/16)/baud)%6; //除数锁存器低字节计算。

U0LCR=0x03; //数据格式设置/除数锁存寄存器访问禁能。

}

5.5 GPIO模块程序

27

西安欧亚学院本科毕业论文(设计)

GPIO控制蜂鸣器程序代码: void DelayNS(uint32 dly) { uint32 i; for(;dly>;dly--) for(i=0;<5000;i++) }

/******************************* 名称 main() 功能 控制蜂鸣器 蜂鸣 ******************************* int main(void) {

PINSEL0=0x00000000; IO0DIR=BEEPCON; while(1) {

IO0SET=BEEPCON; DelayNS(10); IO0CLR=BEEPCON; DelayNS(10); } return(0); }

5.6 RTC模块

实时时钟日历RTC程序代码: int main (void) {

TargetResetInit();

/* 初始化 RTC模块 */ RTCInit();

local_time.RTC_Sec = 0;

28