interrupt void ISRTxUart(void)<br />{<br /> if (Uart.SendWritePtr != Uart.SendReadPtr)<br /> {<br /> SciaRegs.SCITXBUF = Uart.SendBuffer[Uart.SendReadPtr ++];<br /> Uart.SendReadPtr &= 0xff;<br /> }<br /> Uart.SendBusy = Uart.SendWritePtr != Uart.SendReadPtr;<br /> SciaRegs.SCIFFTX.bit.TXINTCLR = 1;<br /> PieCtrlRegs.PIEACK.bit.ACK9 = 1;<br />}<br /><br /><br />interrupt void ISRRxUart(void)<br />{<br /> Uart.ReceiveBuffer[Uart.ReceiveWritePtr ++] = SciaRegs.SCIRXBUF.all;<br /> Uart.ReceiveWritePtr &= 0xff;<br /> SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1;<br /> SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;<br /> PieCtrlRegs.PIEACK.bit.ACK9 = 1;<br />}<br /><br />void UartObj::Init(void)<br />{<br />unsigned int i;<br /> for (i = 0; i < sizeof(ReceiveBuffer); i ++) {<br /> ReceiveBuffer = 0;<br /> SendBuffer = 0;<br /> }<br /> ReceiveWritePtr = 0;<br /> ReceiveReadPtr = 0;<br /> ReceivePosition = 0;<br /> ReceiveCount = 0;<br /> SendWritePtr = 0;<br /> SendReadPtr = 0;<br /> SendBusy = false;<br /> State = 0;<br /> <br /> EALLOW;<br /> GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1;<br /> GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;<br /> EDIS;<br /> /* loopback 8 bit data */<br /> SciaRegs.SCICCR.all = 0x07; // 1 bit stop, disable parity, idle mode, 8 bits data <br /> <br /> SciaRegs.SCICTL1.all = 0x03; // enable TX <br /> SciaRegs.SCICTL2.all = 0x03; //<br /> <br /> SciaRegs.SCIHBAUD = 0;<br /> SciaRegs.SCILBAUD = 0xf3;//SCI_PRD & 0xff;//0xF3;<br /> <br /> SciaRegs.SCICTL1.all = 0x23;<br /> <br />// PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE block<br /> PieCtrlRegs.PIEIER9.bit.INTx1 = 1;<br /> PieCtrlRegs.PIEIER9.bit.INTx2 = 1;<br /><br /> /*设置中断服务程序入口地址*/<br /> EALLOW; // This is needed to write to EALLOW protected registers<br /> PieVectTable.TXAINT = &ISRTxUart;<br /> PieVectTable.RXAINT = &ISRRxUart;<br /> EDIS; // This is needed to disable write to EALLOW protected registers<br /><br /> /*开中断*/<br /> IER |= M_INT9;<br />}<br /><br />//KEY7压键事件处理<br />void KeyboardObj::Key17(void)<br />{<br /> System.BeepOn();<br /> Lcd.SetDisplayPos(2, 0);//汉字定位到上行左端<br /> Lcd.Display("KEY7键单击事件!!");<br /> Uart.puts("KEY7键单击事件");<br />}<br /> |
|