?? uart0.c
字號:
/*
*********************************************************************************************************
* 文件: UART0.C
* 描述: 串口 0 服務函數.
* 編寫: bobey
*********************************************************************************************************
*/
#include "Includes.H"
#define Uart0Bps 57600 // UART0 波特率.
/*
********************************************************************************************************
* 函數: void Init_Uart0 (void).
* 描述: 初始化 UART0, 請明確調用此函數初始化 Uart0 .
********************************************************************************************************
*/
void Init_Uart0 (void)
{
rULCON0 = ((0<<6)+(0<<3)+(0<<2)+(3<<0)); //UART0每幀收發8bits
rUCON0 = ((0<<10)+(0<<9)+(0<<8)+(0<<7)+(0<<6)+(0<<5)+(0<<4)+(1<<2)+(1<<0));//UART0收發模式是中斷請求或者注冊
rUFCON0 = ((0<<6)+(0<<4)+(0<<2)+(0<<1)+(1<<0)); //FIFO Enable
rUMCON0 = ((0<<4)+(0<<0)); //Activate nRTS
rUBRDIV0 = ((int)(PCLK/(Uart0Bps*16))-1); //Baud rate(54) 57600
Uart0.Wr = 0; // 初始化自定義緩沖區.
Uart0.Rd = 0;
Uart0.Sem = OSSemCreate (1); // 建立一個信號量,避免沖突.
rINTMOD &= ~(BIT_UART0); // IRQ mode.
rINTMSK &= ~(BIT_UART0); // 開 UART0 發送中斷屏蔽位.
rINTSUBMSK &= ~(BIT_SUB_TXD0); // 開UART0子發送中斷屏蔽位。
}
/*
********************************************************************************************************
* 函數: void __irq ISR_Uart0 (void).
* 描述: UART0 中斷服務程序.
********************************************************************************************************
*/
void __irq ISR_Uart0 (void)
{
OSIntEnter();
if (rSUBSRCPND & BIT_SUB_TXD0) {
while ((rUFSTAT0 & (1<<9)) == 0) { // 塞滿 FIFO 為止.
if (Uart0.Rd != Uart0.Wr) {
rUTXH0 = Uart0.Buffer[Uart0.Rd++];
if (Uart0.Rd >= Uart0BufSize) {
Uart0.Rd = 0x00;
}
} else break; // 發送完畢.
}
rSUBSRCPND=(BIT_SUB_TXD0); // Clear Sub int pending.
} else {
while (1) ; // 未定義中斷,請檢查中斷原因.
}
OSIntExit();
ClearPending(BIT_UART0); // Clear master pending.
}
/*
********************************************************************************************************
* End.
********************************************************************************************************
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -