|
本帖最后由 Jacktang 于 2015-11-30 21:33 编辑
請問各位大大我的5438開發板上的UART一直收不到數據
是程式有甚麼問題嗎?
我確定電腦UART有輸出 我有使用其他程式測試
可是IAR用斷點一直觀察不到數據
我是用板上的例程
/******************************************************************************
* 文件: main.c
* 說明: MSP430F5438的UART設置實驗
* 打開串口調試助手發送據據
* 觀察串口調試助手中接收數據區,數據的變化
* 編譯: IAR Embedded Workbench IDE for MSP430 v5.10
******************************************************************************/
#include "msp430x54x.h"
/*****************************************************************************
* 函數聲明區
*****************************************************************************/
void Init_RS232(void);
/******************************************************************************
* 變量定義區
******************************************************************************/
unsigned RX_buffer=0;
/*********************************系統主函數據********************************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 關狗
P5DIR |=BIT4;
P5OUT |=BIT4;
Init_RS232(); //串口初始化
_EINT(); //開全局中斷
LPM1; //進入低功耗模式
}
/******************************************************************************
* 函數名:void Init_RS232(void)
* 功 能:RS232初始化
* 參 數:無
* 返回值:無
******************************************************************************/
void Init_RS232(void)
{
P3SEL = 0x30; // 選擇RS232引腳功能
P3DIR =BIT4;
P3DIR &=~BIT5;
UCA0CTL1 |= UCSWRST; // 復位UART狀態機
UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600=3.41
UCA0BR1 = 0x00; //
UCA0MCTL = UCBRS_3+UCBRF_0; // UCBRSx=3, UCBRFx=0
UCA0CTL1 &= ~UCSWRST; // 啟動UART
UCA0IE |= UCRXIE; // 數據接收中斷使能
}
/******************************************************************************
* 函數名:__interrupt void USCI_A3_ISR(void)
* 功 能:UART中斷函數
* 讀出 PC 機傳輸過來的數據並向PC機發送數據
* 參 數:無
* 返回值:無
******************************************************************************/
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,4))
{
case 0:break; //
case 2: //
RX_buffer=UCA0RXBUF; //
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX 緩衝區是否空閒
UCA0TXBUF = RX_buffer; // 串口發送數據,PC 機接收數據
_NOP(); // 設置斷點,觀察接收到的數據 RX_buffer
break;
case 4:break; //
default: break;
}
}
|
|