⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 MSP430的适时操作系统的移置代码。欢迎下载
💻 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 + -