Cortex-M3 (NXP LPC1788)之UART用法
时间:11-19
来源:互联网
点击:
- )(0x40098000))
- #definerU2RBR(*(volatileunsigned*)(0x40098000))
- #definerU2FCR(*(volatileunsigned*)(0x40098008))
- #definerU2IIR(*(volatileunsigned*)(0x40098008))
- #definerU2LSR(*(volatileunsigned*)(0x40098014))
- #definerU2IER(*(volatileunsigned*)(0x40098004))
- #definerU2ACR(*(volatileunsigned*)(0x40098020))
- voidUART2_IRQHandler()
- {
- unsignedintintId;
- chartmp_char;
- intId=rU2IIR&0xf;
- rU2THR=intId;
- if(intId==0xc||intId==0x4)//RDA或者CTI中断
- {
- rU2LCR&=~(0x1<7);//DLAB=0
- tmp_char=rU2RBR&0xff;
- rU2THR=tmp_char;
- }
- intId=rU2IIR&0xf;
- rU2THR=intId;
- if(tmp_char==0xa5)
- rFIO1PIN|=(1<18);
- elseif(tmp_char==0x5a)
- rFIO1PIN&=~(1<18);
- }
- voidSystemInit()
- {
- rSCS&=~(0x1<4);//频率12M
- rSCS|=(0x1<5);//使能主振荡器
- while(0==(rSCS&(0x1<6)));//等待主振荡器稳定
- rCLKSRCSEL=0x1;
- rPLL0CFG=0x9;//配置CCLK=120M
- rPLL0CON=0x01;
- rPLL0FEED=0xAA;
- rPLL0FEED=0x55;
- while(0==(rPLL0STAT&(0x1<10)));
- rCCLKSEL=(0x1|(0x1<8));
- rPCLKSEL=0x2;//配置PCLK=60M
- rCLKOUTCFG=0x0|(0xb<4)|(0x1<8);
- }
- voidInit_Uart2()
- {
- rPCONP|=0x1<24;//使能UART2功率控制
- rIOCON_P0_10=(rIOCON_P0_10&(~0x7))|0x1;//P0.10P0.11做UART2的发送和接收管脚
- rIOCON_P0_11=(rIOCON_P0_11&(~0x7))|0x1;
- rU2LCR|=0x1<7;//DLAB=1
- rU2FDR=1|2<4;//波特率设置115200
- rU2DLM=0;
- rU2DLL=22;
- rU2LCR&=~(0x1<7);//DLAB=0
- rU2LCR|=0x3;//8位数据位,无校验,1个停止位
- rU2TER|=0x1<7;//使能串口2的发送
- rU2IER|=0x1;//使能串口2的接收中断
- rU2FCR|=0x1;//复位FIFO,设置接收1个字符触发中断
- rU2FCR|=0x1<1|0x1<2;
- rISER0|=0x1<7;//使能串口2中断
- }
- voidUart2SendC(charc)
- {
- rU2THR=c&0xff;
- while(!(rU2LSR&(0x1<5)));//等待rU2THR中的数据发送完成,防止数据溢出
- }
- voidUart2SendS(char*s)
- {
- while(*s)
- {
- Uart2SendC(*s);
- s++;
- }
- }
- intmain(void)
- {
- charstr[]={"\n\r1,DisplaytheU2IIR[3:0]+Data+U2IIR[3:0]\n\r2,Send0x5a--->TurnontheLED\n\r3,Send0xa5--->TurnofftheLED\n\r"};
- rFIO1DIR|=(1<18);//GPIO1.18->OUTPUT
- Init_Uart2();
- Uart2SendS(str);
- while(1);
- }
运行结果如下图所示
Cortex-M3NXPLPC1788UAR 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)