工具与软件:
Im 使用下面给出的代码:不起作用:我想配置 UART 波特率19200和8MHz
我遵循数据表、尝试了大量时间来调整不同的值、但它不起作用、但它在19200 16 MHz 上工作
如果有人能在这种情况下帮助我,那将是伟大的。
谢谢
#include
/**
* main.c
*波特率19200 8MHz
*
*/
//用于初始化 UART 的函数
void initUART (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//-设置 UART
UCA1CTLW0 |= UCSWRST;//将 UART A1置于软件复位状态(配置前需要)
//选择 SMCLK (8MHz)作为时钟源
UCA1CTLW0 |= UCSSEL__SMCLK;
//使用8MHz 时钟将波特率设置为19200
UCA1BRW = 26;// 8MHz /(16 * 19200)= 26
//基于0.4286小数部分配置调制
UCA1MCTLW =(0x54 << 8)|(0 << 4)| UCOS16;// UCBRSx = 0x54、UCBRFx = 0、启用 UCOS16 (过采样)
//--设置端口
P3SEL1并且=~BIT4;//清除 P3SEL1的位4以选择 UART 功能
P3SEL0 |= BIT4;//设置 P3SEL0位4以选择 UART 功能
//解锁和启用 I/O 引脚(禁用高阻抗模式)
PM5CTL0 &=~μ H LOCKLPM5;
//将 UART 退出复位以开始操作
UCA1CTLW0 &=~μ s UCSWRST;
}
//通过 UART 发送字符串的函数
void uartSendString (字符*str)
{
while (* str!='\0')
{
while (! (UCA1IFG & UCTXIFG));//等待 TX 缓冲区准备就绪
UCA1TXBUF =* str;//传送字符
STR++;//移动到下一个字符
}
}
void main (void)
{
initUART ();//初始化 UART
//-主循环
while (1)
{
uartSendString ("Hello, worked 8MHz Baud Rate 19200!\r\n");//发送字符串
__delay_cycles (800000);//延迟以避免使 UART 不堪重负(根据需要进行调整)
}
}