请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR2532 您好,
我的系统(MSP430FR2532)在波特率9600方面运行良好。 但是当我将波特率更改为11.52万时,它不起作用;我检查范围,发现1位的持续时间是10us (而不是波特率11.52万的正确位的8.6us)。 请帮助检查我是否遗漏了任何内容? 谢谢你。
#定义MCLK (800万L)/* MCLK频率(以Hz为单位)*/
#define CONFIG_CI_PHYDL_UART_BAUDRATE (11.52万)
#IF (MCLK=800万)
# IF (CONFIG_CI_PHYDL_UART_BAUDRATE == 9600)
# 定义UCOS16_VAL 1#
定义UCBRX_VAL 52
# 定义UCBRSx_VAL 0x49
# 定义UCBRFx_VAL 1
# Elif (config_CI_PHYDL_UART_BAUDRATE == 5.76万)
# 定义UCOS16_VAL 1#
定义UCBRX_VAL 8#
定义UCBRSx_VAL 0xF7
# 定义UCBRFx_VAL 10#
Elif (config_CI_PHYDL_UART_BAUDRATE == 11.52万)
# 定义UCOS16_VAL 1#
定义UCBRX_VAL 4#
定义UCBRSx_VAL 0x55
# 定义UCBRFx_VAL 5#
Else
# 错误"Baudrate is not supported (不支持Baudrate)"
# endif
#else
#error "Frequency is not supported (不支持频率)
"#endif
/**********************************************************************************************
*
**@brief初始化UART
*
*@Return none
***************************************************************************************** /
//内联静态void Clock_init(void)
void TI_MSPBoot_CI_PHYDL_Init(t_CI_Callback * CI_Callback)
{
UCA0CTLW0 = UCSWRST | UCSSEL_2; //在RESET中保留USCI并使用SMCLK
//P1SEL0 &=~(BIT4 | BIT5); //为USI_A0 UART模式启用P4[2:3]
//P1SEL1 ||(BIT4 | BIT5); //
P1SEL0 || BIT4 | BIT5;
UCA0BR0 =(UCBRX_VAL和0xFF); //设置低波特率字节
UCA0BR1 =(UCBRX_VAL >> 8); //设置高波特率字节
UCA0MCTLW = UCOS16_VAL | //设置调制值
(UCBRSx_VAL << 1)|
(UCBRFx_VAL < 4);
/*UCA0BR0 = 4; //UCBR = INT (N/16)= 4
UCA0BR1 = 0;
UCA0MCTLW |= 0x5500 + UCBRF_5 + UCOS16;*/
UCA0CTLW0 &=~UCSWRST; //清除软件重置,恢复操作
//初始化所有回调
CI_Callback_PTR = CI_Callback;
//初始化状态机
CI_State_Machine = USCI_State_IDLE;
}/******************************************************************************
*
**@brief初始化MSP430时钟
*
*@返回NONE
************************************************************************************************* //
内联静态void clock_init(void)
静态void clock_init(void)
{
//根据MCLK设备数据表的要求配置一个FRAM等待状态
//在配置时钟系统之前运行超过8MHz。
/************************************************** /
WDTCTL = WDTPW | WDTHOLD;
//FRCTL0 = FRCTLPW | NWITS_1;
__bis_sr_register (SCG0); //禁用FLL
CSCTL3 |= SELREF_REFCLK; //将REFO设置为FLL参考源
CSCTL0 = 0; //清除DCO和MOD寄存器
CSCTL1 &=~(DCORSEL_7); //首先清除DCO频率选择位
CSCTL1 |= DCORSEL_3; //设置DCO = 8MHz
CSCTL2 = FLLD_0 + 242; // DCOCLKDIV = 8MHz
__DELAY周期(3);
__BIC_SR_REGISTER (SCG0); //启用FLL
While (CSCTL7和(FLLUNLOCK0 | FLLUNLOCK1)); // FLL已锁定
CSCTL4 = SELMS__DCOCLKDIV |拉美经济体系__REFOCLK; //将默认的REFO(~3.2768万Hz)设置为ACLK源,ACLK =3.2768万Hz
//默认DCOCLKDIV为MCLK和SMCLK源
PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式
//以激活先前配置的端口设置
__delay_cycles(1000);
}
此致,
光