?? uart.c
字號:
//====================================================================================//
//文件名:UART.c
//功能描述:串口驅動程序
//編寫:
//時間:07.12.29
//修改:
//====================================================================================//
//頭文件
#include "includes.h"
//全局變量聲明
INT8U Receive_Buffer[18];
INT8U record = 0;
//extern OS_EVENT *TASK1_EVENT;
extern OS_EVENT *UART_EVENT;
//#include "UART.h"
//====================================================================================//
//函數名:UART_Init
//功能:UART串口初始化
//參數:無
//返回值:無
//編寫:
//時間:08.01.02
//修改:
//===================================================================================//
void UART_Init(void)
{
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
UCTL0 = 0x00;
ME1 |= UTXE0|URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = ACLK
UBR00 = 0x41;//0x41; // 8Mhz/9600 = 833 = 0x0341
UBR10 = 0x03;//0x03; //
UMCTL0 = 0x00; //0x03 // no modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt
IFG1 &= ~UTXIFG0;
}
//====================================================================================//
//函數名:UART_SendData
//功能: UART串口發送數據子函數
//參數: 發送的數據 發送的數據長度
//返回值:無
//編寫:
//時間: 08.01.02
//修改:
//===================================================================================//
void UART_SendData(INT8U buffer[],INT8U length)
{
INT8U i;
for(i=0;i<length;i++)
{
TXBUF0 = (buffer[i]>>4)|0x30;
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
TXBUF0 = (buffer[i]&0x0F)|0x30;
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
TXBUF0 = 0x20;
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
}
// while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
}
//====================================================================================//
//函數名:UART_Send
//功能: UART串口發送字串子函數
//參數: 發送的字串數據 發送的數據長度
//返回值:無
//編寫:
//時間: 08.01.02
//修改:
//===================================================================================//
void UART_Send(INT8U buf[],INT8U length)
{
INT8U i;
for(i=0;i<length;i++)
{
TXBUF0 = buf[i];
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
}
// while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
}
//====================================================================================//
//函數名:usart0_rx
//功能:UART串口接收中斷
//參數:無
//返回值:無
//編寫:
//時間:08.01.02
//修改:
//===================================================================================//
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
Receive_Buffer[record] = RXBUF0;
UART_Send(Receive_Buffer,1); //測試是否正確接收
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer empty?
OSSemPost(UART_EVENT);
}
//===================================================================================//
//end of file//
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -