Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430FR5992波特率设置

$
0
0

最近在使用fr5992时,需要用到1200的波特率,根据文档设置完以后,发现串口接收不到任何数据,但是用官方的例程可以,说明硬件没有问题,不清楚哪里设置出了问题,源码如下,

#include <msp430fr5992.h>

char RecvBuf[20] = {0};
int dataLen = 0;
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
PM5CTL0 &= ~LOCKLPM5;

P2SEL1 &= ~( BIT5 + BIT6 );//TX,RX
P2SEL0 |= ( BIT5 + BIT6 );//TX,RX

UCA1CTLW0 |= UCSWRST; // **Put state machine in reset**
UCA1CTLW0 |= UCSSEL__ACLK; // CLK = ACLK
//Baudrate = 1200
//BRCLK BaudRate UCOS16 UCBRx UCBRFx UCBRSx(2)
//32768 1200 1 1 11 0x25
UCA1BRW = 1;
UCA1MCTLW |= UCOS16 | UCBRF_11|0x2500;

UCA1CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt
__bis_SR_register(GIE);

while(1)
_NOP();

return 0;
}


void Uart1_PutChar(char data)
{
while (!(UCA1IFG & UCTXIFG));
UCA1TXBUF = data;
}

/******************************************************************************
函数: void USCI_A1_ISR(void)
功能: 串口1中断处理函数
参数:
返回值:
说明:
******************************************************************************/

#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{

switch( UCA1IV )
{
case 0:
break; // Vector 0 - no interrupt

case 2: // Vector 2 - RXIFG
{
dataLen = dataLen % 20;
RecvBuf[dataLen] = UCA1RXBUF;
}
break;

case 4:
break; // Vector 4 - TXIFG

default:
break;
}
}


Viewing all articles
Browse latest Browse all 3634

Trending Articles