📄 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 + -