您好!
在 MSP430FR2311 Launchpad 上、我尝试了以下程序。
接收中断从不触发。
能不能帮我弄清楚我的错了吗?
非常感谢您的帮助
========================================================================
#include
unsigned char RXData = 0;
无符号字符 TXData = 0x6;
unsigned int isrCnt = 0;
/**
*串行通信
*
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
PM5CTL0 &=~LOCKLPM5;//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
P1DIR |= BIT0;
P1OUT &=~BIT0;// P1.0 OUT 低电平
P1OUT |= BIT0;
P1OUT &=~BIT0;// P1.0 OUT 低电平
//配置 UART 引脚
P1SEL0 |= BIT6 | BIT7;//将2个 UART 引脚设置为第二功能
//配置 UART
UCA0CTLW0 |= UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_SMCLK;
//波特率计算
UCA0BR0 = 8;// 1000000/115200 = 8.68
UCA0MCTLW = 0xD600;// 1000000/115200 - INT (1000000/115200)=0.68
// UCBRSx 值= 0xD6 (请参阅 UG)
UCA0BR1=0;
UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断
while (1)
{
while (!(UCA0IFG & UCTXIFG));
UCA0TXBUF = TXData;//将数据加载到缓冲区中
_bis_SR_register (LPM3_bits|GIE);//输入 LPM0
__no_operation();//用于调试器
}
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_A0_Vector
_interrupt void USCI_A0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
其他
错误编译器不受支持!
#endif
{
isrCnt++;
switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:
中断;
USCI_UART_UCRXIFG 案例:
UCA0IFG &=~ UCRXIFG;//清除中断
RXData = UCA0RXBUF;//清除缓冲区
if (RXData!= TXData)//检查值
{
P1OUT |= BIT0;//如果错误打开 P1.0
while (1);//陷阱 CPU
}
TXData++;//递增数据字节
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//在 TI 上退出 LPM0
中断;
USCI_UART_UCTXIFG 案例:
中断;
USCI_UART_UCSTTIFG 案例:
中断;
USCI_UART_UCTXCPTIFG 案例:
中断;
}
}