MSPP430F2619串口求助!!!

2019-08-03 17:52发布

调了一整天,串口有数据但是波特率不对,求大神帮帮忙。程序如下:
#define uint  unsigned int
#define uchar unsigned char

void SysCtlClockInit()
{
    DCOCTL=0;
    BCSCTL1=CALBC1_16MHZ;
    DCOCTL =CALDCO_16MHZ;
    BCSCTL1 |=DIVA_1;    //ACLK =MCLK/2=8M
    BCSCTL2 |=DIVS_1;    //SMCLK=MCLK/2=8M
}

void UartInit()
{
   
    P3SEL |=BIT4+BIT5;         //发送和接收引脚为第2功能
    UCA0CTL1 |=UCSWRST;      //reset UART module,as well as enable UART module
    UCA0CTL1 |=UCSSEL_2;     //UART clock is SMCLK
    UCA0BR0  |=0x41;           //Baud N=BCLK/rate,rate=9600,BCLK=SMCLK=8M
    UCA0BR1  |=0x03;
    UCA0MCTL  = UCBRS_1;      //UCBRSx=2
    UCA0CTL1 &= ~UCSWRST;
    //IE2 |= UCA0RXIE;           //接收中断使能
}
/************************************************************************
* Function Name : UARTPutChar
* Create Date : 2012/07/27
* Author  :
*
* Description :send a character
*
* Param : cTX is willing to send character
************************************************************************/
void UARTPutChar(unsigned char cTX)
{
    UCA0TXBUF=cTX;
    while (!(IFG2 & UCA0TXIFG));  //waiting UCA0TXBUF is empty
       IFG2 &= ~UCA0TXIFG;           //clear TX interrupt flag
}
/************************************************************************
* Function Name : UARTGetChar
* Create Date : 2012/07/27
* Author  :
*
* Description :get a character
*
* Param : cRX is willing to get character
************************************************************************/
uchar UARTGetChar(void)
{
    uchar GetChar;
    while (!(IFG2 & UCA0RXIFG));  //UCA1RXBUF has received a complete character
    IFG2&=~UCA0RXIFG;           //clear RX interrupt flag
    GetChar  =UCA0RXBUF;
    return GetChar;
}
/************************************************************************
* Function Name : UARTPutstring
* Create Date : 2012/07/27
* Author  :
*
* Description :output string
*
* Param : char *str point send string
* return: the length of string
************************************************************************/
int UARTPutstring( char *str)
{
   unsigned int uCount=0;
   do
   {
    uCount++;
    UARTPutChar(*str);
   }
   while(*++str!='');
   UARTPutChar(' ');
   return uCount;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
comeon201208
1楼-- · 2019-08-03 21:56
8M的话设置9600的波特率的,我看着没啥问题的啊。
往事随风丶
2楼-- · 2019-08-04 02:35
comeon201208 发表于 2014-7-24 23:30
8M的话设置9600的波特率的,我看着没啥问题的啊。

但是传到上位机是一堆乱码啊
dirtwillfly
3楼-- · 2019-08-04 06:20
 精彩回答 2  元偷偷看……
往事随风丶
4楼-- · 2019-08-04 12:17
dirtwillfly 发表于 2014-7-25 12:00
和上位机上串口软件的波特率设置一致吗?包括停止位、校验位等倒要一样才行 ...

都一致,示波器测出来频率只有3.8k
dirtwillfly
5楼-- · 2019-08-04 16:28
往事随风丶 发表于 2014-7-25 15:04
都一致,示波器测出来频率只有3.8k

测的哪里的频率?
往事随风丶
6楼-- · 2019-08-04 20:53
dirtwillfly 发表于 2014-7-25 15:12
测的哪里的频率?

写了个程序不停向上位机发送字母A,测得发送频率3.8k

一周热门 更多>