📄 p229_s1_f44x.c
字号:
//例1 MSP430F449在ACLK = LFXT1 = 32768Hz,MCLK=SMCLK=UCLK0=DCOCLK=1048576Hz频率驱动下以115200波特率异步串行通信,采用中断方式接收并发送收到的数据。P229
//计算波特率分频因子:1048576Hz/115200~9.1(009h|08h)。
//相关程序如下:
#include <msp430x44x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP14PF;
UTCTL0 = SSEL1; //UCLK = SMCLK
UBR00 = 0x09; //在1MHz下进行115200波特率通信
UBR10 = 0x00; //在1MHz下进行115200波特率通信
UMCTL0 = 0x0A; //波特率调整
UCTL0 = CHAR; //8位character *SWRST*
ME1 |= UTXE0 + URXE0; //使能USART0 TXD/RXD
IE1 |= URXIE0; //使能USART0 RX中断
P2SEL |= 0x30; //P2.4,5用作USART0 TXD/RXD
P2DIR |= 0x10; //P2.4输出
_EINT();
for(;;)
{
_BIS_SR(CPUOFF); //进入LPM0
_NOP();
}
}
#pragma vector = UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
while ((IFG1 & UTXIFG0) == 0); //USART0接收缓存有数据吗?
TXBUF0 = RXBUF0; //读出接收到数据
}
/*
//同理,当ACLK = UCLK0 = LFXT1 = 32768Hz,MCLK = SMCLK = DCO~800k,波特率为2400时,实现上述同样功能,只需要改变相关波特率寄存器设置:
UBR00 = 0x0D; //32k/2400=13.65
UBR10 = 0x00;
UMCTL0 = 0x6B; //波特率调整
//当ACLK=LFXT1=32768Hz,MCLK=SMCLK=UCLK0=DCOCLK=1048576Hz,波特率为9600时,相关波特率寄存器设置:
UBR00 = 0x6D; //1048576Hz/9600~109.23
UBR10 = 0x00; //1MHz 9600
UMCTL0 = 0x81; //波特率调整
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -