工具/软件:
您好团队:
请帮助解决通过 UART 发送数据时的问题、我使用的是 MSP430fr6047 EVM 板、修订版 A 和修订版 B 芯片。
谢谢你。
文卡塔拉马纳
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.
工具/软件:
您好团队:
请帮助解决通过 UART 发送数据时的问题、我使用的是 MSP430fr6047 EVM 板、修订版 A 和修订版 B 芯片。
谢谢你。
文卡塔拉马纳
尊敬的 Venkat:
下面是供您参考的示例:
您可以参考 UG 来了解如何计算波特率:(该演示也在注释中显示)
B.R.
Sal
让我检查一下并更新。 不过、我在 TI 网站上找到了另一个工作示例:它的工作原理。
#include
void uartSendStr (char*);
内部 main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗
//配置 GPIO
P1SEL0 |= BIT2 | BIT3;// USCI_A1 UART 操作
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 且=~LOCKLPM5;
//最大 DCO 设置~8MHz 的启动时钟系统
CSCTL0_H = CSKEY_H;//解锁 CS 寄存器
CSCTL1 = DCOFSEL | DCORSEL;//将 DCO 设置为 8MHz
CSCTL2 = SELA_VLOCLK | SELS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM_1;//设置所有分频器
CSCTL0_H = 0;//锁定 CS 寄存器
//为 UART 模式配置 USCI_A0
UCA1CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA1CTLW0 || UCSSEL_SMCLK;// CLK = SMCLK
//波特率计算
// 8000000/(16*9600)=52.083
//分数部分= 0.083
//用户指南表 24-4:UCBRSx = 0x04
// UCBRFx = int ((52.083-52)*16)= 1
UCA1BRW = 52;// 80000/16/9600
UCA1MCTLW |= UCOS16 | UCBRF_1 | 0x4900;
UCA1CTLW0 &=~UCSWRST;//初始化 eUSCI
// UCA1IE |= UCRXIE;//启用 USCI_A0 RX 中断
//__bis_SR_register (GIE);//进入 LPM3、启用中断
uartSendStr(“\r\nramaSita\r\n")“);
//__bis_SR_register (LPM3_bits + GIE);//进入 LPM3、中断已启用
//uartSendStr(“ramaSita")“);
__ no_operation ();//对于调试器
}
/*
无符号字符温度;
#if Defined (__TI_COMPILER_VERSION__)|| Defined (__IAR_SYSTEM_ICC__)
pragma vector=EUSCI_A1_vector
__interrupt void USCI_A1_ISR (void)
#elif defined (__GNUC__)
void _attribute__((interrupt (EUSCI_A1_vector)) USCI_A1_ISR (void)
#else
错误:不支持编译器!
#endif
{
switch (__even_in_RANGE (UCA1IV、USCI_UART_UCTXCPTIFG))
{
case USCI_NONE:中断;
case USCI_UART_UCRXIFG:
while(!(UCA1IFG 和 UCTXIFG));
TEMP = UCA1RXBUF;
UCA1TXBUF = temp;
// UCA1TXBUF = temp;
__ no_operation ();
休息;
用例 USCI_UART_UCTXIFG:
休息;
用于 USCI_UART_UCSTTIFG:BREAK;
case USCI_UART_UCTXCPTIFG:break;
默认值:中断;
}
}
*/
void uartSendStr(字符* s)
{
while (* s)
{
UCA1TXBUF =*s;
while(!(UCA1IFG & UCTXIFG));
s++;
}
}