This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5438 UART中斷近不去

Other Parts Discussed in Thread: MSP430F5438

各位大大好

我是MSP430的新手

最近在研究RS232 UART 的使用方法

可是我在電腦給數據後 他都不會進入中斷

我設斷點在中斷裡面 都沒有跑進中斷過 斷點也都沒有啟動

下面是我使用的程式

可以幫我看看有甚麼問題嗎?

是缺少了甚麼東西嗎?

/******************************************************************************
* 文件: 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;
}
}

  • 好像是少了:

    ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受

  • 请参考附件官方例程

  • 你好

    我使用官方例程後

    設斷點在中斷裡面觀察

    可是我傳送數據他還是沒有接收到

    始終沒有進入中斷裡面

    我使用的是MSP430F5438開發版

    我確定我電腦的RS232是沒有問題的

    因為 我用另一個藍芽RS232接收器是有辦法傳輸的

    f請問是我的開發版RS232有問題嗎?

  • 你好

    我加入了

    可是還是不行

    出現錯誤@@

  • 你好

    我使用了官方例程

    還是不行

    是我的開發版有問題嗎?

  • 这是有可能的,你先不要用ECHO,不要用过那种把收到的发出来的方法,直接往UCA0TXBUF填数,看PC能不能收到。