我有一个 MSP430F5438A、我正在尝试将半字节发送到20x4 LCD 屏幕、底部是一个 Digole 串行控制模块。 我不需要从 LCD 屏幕接收任何内容、因此 RX 引脚没有连接。 我使用 UART 模式、因为对于该项目、没有可用的 i2c 或 SPI 引脚。 任何帮助都是伟大的,一直在寻找和尝试,不能得到任何东西!!! 代码如下:
#include
int main (空)
{
WDTCTL = WDTPW+WDTHOLD;//停止看门狗计时器
P7SEL |= 0x03;//端口选择 XT1
操作
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
__DELAY_CYCLES (100000);// OSC 稳定的延迟
} while (SFRIFG1&OFIFG);//测试振荡器故障标志
P9OUT |= BIT6; // LED 的电源使能
P9DIR |= BIT6; // LED 的电源使能
P4OUT = BIT4+BIT4;//针对 LED 输出的 P1.0/1设置
P4DIR |= BIT4+BIT5;//
P3SEL |= BIT4+BIT4;// P3.4、5 UART 选项选择
UCA0CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA0CTL1 |= UCSSEL_1;// CLK = ACLK
UCA0BR0 = 0x03;// 32k/9600 - 3.41
UCA0BR1 = 0x00;//
UCA0MCTL = 0x06;//调制
UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UCA0IE |= UCTXIE + UCRXIE;//启用 USCI_A0 TX/RX 中断
_bis_SR_register (LPM3_bits + GIE);//启用中断后进入 LPM3
__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
{
switch (__evo_in_range (UCA0IV、4))
{
情况0:中断;//向量0 -无中断
情况2:中断;//向量2 - RXIFG
情况4://向量4 - TXIFG
_DELAY_CYCLES (5000);//在 TX 字节之间添加小间隙
UCA0TXBUF = 0x08;//发送字符
P4OUT ^= BIT4;
中断;
默认值:break;
}
}