?? uart0.c
字號:
/*
*********************************************************************************************************
* 文件: UART0.C
* 描述: Uart 0 服務程序.
* 編寫: 深思 (001-12345@sohu.com).
*********************************************************************************************************
*/
#include "headers.h"
#include "uc_os.h"
/*
*********************************************************************************************************
* 描述: 初始化 UART0 .
*********************************************************************************************************
*/
#define Baud 115200 // 設置當前 UART0 的波特率.
void Init_UART0 (void)
{
ULCON0 = ((0<<6)+(0<<3)+(0<<2)+3); // Normal,No parity,1 stop,8 bit.
UCON0 = ((0<<9)+(0<<8)+(0<<7)+(0<<6)+(0<<5)+(0<<4)+(1<<2)+0);
UFCON0 = ((0<<6)+(0<<4)+(0<<2)+(0<<1)+1);
UMCON0 = ((0<<4) + 0);
UBRDIV0= ((int)(Fclk / (16 * Baud)) - 1);
INTMSK &= ~(1 << 3); // 開 UART0 發送中斷屏蔽位.
Uart0.Wr = 0;
Uart0.Rd = 0;
Uart0.Sem = OSSemCreate (1); /* 建立一個信號量,避免沖突.*/
}
/*
********************************************************************************************************
* 函數: void __irq ISR_UTXD0 (void).
* 描述: UART0 發送中斷服務程序.
********************************************************************************************************
*/
void __irq ISR_UTXD0 (void)
{
OSIntEnter();
while ((UFSTAT0 & (1<<9)) == 0) {
if (Uart0.Rd != Uart0.Wr) {
UTXH0 = Uart0.Buffer[Uart0.Rd++];
if (Uart0.Rd >= Uart0BufSize) {
Uart0.Rd = 0x00;
}
} else break;
}
OSIntExit();
I_ISPC |= (1 << 3); /* clear the pending bit. */
}
/*
********************************************************************************************************
* End.
********************************************************************************************************
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -