您好,
我正在使用CCS v7,设备MSP430FR5972。 我只是想运行UART。 只需从PC键盘发送任何想要接收相同但无法正常工作的内容。
我的编码如下:
#include <MSP4S.h>
内部主(无效)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗
//配置GPIO
P2SEL0 || BIT0 | BIT1;// USI_A0 UART操作
P2SEL1 &=~(BIT0 | BIT1);
//禁用GPIO开机默认高阻抗模式以激活
//以前配置的端口设置
PM5CTL0 &=~LOCKLPM2;
//启动时钟系统,最大DCO设置为~8MHz
CSCTL0_H = CSOKEY >> 8;//解锁时钟寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL;//将DCO设置为8MHz
CSCTL2 =拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1;//设置所有分隔线
CSCTL0_H = 0;//锁定CS寄存器
//为UART模式配置USI_A0
UCA0CTLW0 = UCSWRST;//重置eUSCI
UCA0CTLW0 |= UCSSEL__SMCLK;// CLK = SMCLK
//波特率计算
// 80万/(16*9600)=9600= 52.083
//分数部分= 0.083
//用户指南表21-4:UCBRSx = 0x04
// UCBRFx = int ((52.083 -52)*16)= 1
UCA0BR0 = 52;// 80万/16/9600</s>9600
UCA0BR1 = 0x00;
FRCTL0 = FRCTLPW | NWAITS_1;//更改naccess-x值以添加正确数量的等待
UCA0MCTLW || UCOS16 | UCBRF_1 | 0x4900;
UCA0CTLW0 &=~UCSWRST;//初始化eUSCI
UCA0IE |= UCRXIE;//启用USI_A0 RX中断
__bis_sr_register(LPM3_bits | GIE);//输入LPM3,中断已启用
__no_operation();//用于调试器
}
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
#否则
错误编译器不受支持!
#endif
{
Switch(__偶 数_in_range(UCA0IV, USI_UART_UCTXCPTIFG))
{
案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
while (!(UCA0IFG和UCTXIFG));
UCA0TXBUF = UCA0RXBUF;
__no_operation();
中断;
案例USI_UART_UCTXIFG:中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
}
}
也使用USB-TTL设备并连接Rx-Tx,Tx-Rx和GND公共。 在Hyper终端上设置波特率9600。