1、第二级,第三级,第四级,第五级,UART,通信程序中断实现方法,发送中断与接收中断,声明:本文著作权归电子科技大学中山学院嵌入式系统实验室所有,著作人:邓春健,UART,通信程序,发送中断程序,回忆:,P297,页使用查询方式从串口发送多个字节数据,char*,str,=“hello world”;,for(i=0;i=9;i+),UART0_SendByte(stri);,void UART0_SendByte(uint8,dat,),U0THR=,dat,;,while(U0LSR,主函数,uint8 SEND_STRING=Hello World!,rn,;,uint8*,str,;,
2、int,main(void,),IRQEnable,();,UART0_Init();,UART0_INT_Init();,str,=SEND_STRING;,UART0_SendByte(*,str,+);,while(1);,return(0);,通信参数设置,void UART0_Init(void),uint16,Fdiv,;,PINSEL0=0 x00000005;,U0LCR=0 x83;,Fdiv,=(,Fpclk,/16)/9600;,U0DLM=,Fdiv,/256;,U0DLL=,Fdiv,%256;,U0LCR=0 x03;,UART,中断设置,void UART0_IN
3、T_Init(void),U0IER=2;,U0FCR=1;,VICIntSelect,=0;,VICVectCntl0=0 x20|6;,VICVectAddr0=(int)UART0_ISR;,VICIntEnable,=16;,UART,中断服务程序,void _,irq,UART0_ISR(),int,int_flag,;,int_flag,=U0IIR,if(,int_flag,=2),if(*,str,=0,),str,=SEND_STRING;,UART0_SendByte(*,str,+);,VICVectAddr,=0;,void UART0_SendByte(uint8 d
4、ata),U0THR=data;,UART,通信程序,发送接收中断程序,要求:,1.PC,和,ARM,通信,当,PC,发送,10,个数据给,ARM,后,,ARM,将这,10,个数据返回给,PC,2.,要求在发送和接收程序都使用中断方法,主函数,uint8 rebuf20;,int,re_pointer,=0;,int,send_pointer,=0;,int,main(void,),IRQEnable,();,UART0_Init();,UART0_INT_Init();,while(1);,return(0);,通信参数设置,void UART0_Init(void),uint16,Fdiv
5、PINSEL0=0 x00000005;,U0LCR=0 x83;,Fdiv,=(,Fpclk,/16)/9600;,U0DLM=,Fdiv,/256;,U0DLL=,Fdiv,%256;,U0LCR=0 x03;,UART,中断设置,void UART0_INT_Init(void),U0IER=3;,U0FCR=1;,VICIntSelect,=0;,VICVectCntl0=0 x20|6;,VICVectAddr0=(int)UART0_ISR;,VICIntEnable,=16;,void _,irq,UART0_ISR(),int,int_flag,;,int_flag,=U0IIR,if(,int_flag,=2),if(,send_pointer,=10),UART0_SendByte(rebuf0);,re_pointer,=0;,VICVectAddr,=0;,