|
|
本帖最后由 ruopan 于 2020-8-13 11:41 編輯
芯片:MSP430F169
功能:實(shí)現(xiàn)串口與PC通信
問題:建立不了通信
代碼如下:
串口配置:
#include "msp430x16x.h"
//串口IO初始化
void USART_GPIO_init(void)
{
P3DIR|=BIT6; //P3.4 串口輸出
P3DIR&=~BIT7; //P3.5串口輸入
P3SEL=0xC0; //選擇外設(shè)
}
//串口配置
void USART_config(void)
{
ME2 |= URXE1 + UTXE1; //開啟串口1傳輸和接收
U1CTL |= CHAR; // 8位數(shù)據(jù)位
U1TCTL |= SSEL1; //串口時(shí)鐘為SMCLK
U1BR0 |= 0X03;
U1BR1 |= 0X00; //波特率為9200 默認(rèn)一位停止位
U1MCTL = 0X4A;
U1CTL &=~ SWRST; //設(shè)置完畢清除SWRST USART1開始工作
IE2 |= URXIE1; //開啟串口1接收中斷
}
#pragma vector=UART1RX_VECTOR
__interrupt void usart1_rx (void)
{
while(!(IFG2 & UTXIFG1));
TXBUF1 = RXBUF1;
}
主函數(shù):
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
BASIC_CLOCK(); //初始化時(shí)鐘
USART_GPIO_init();
USART_config();
_EINT();
while(1)
{
}
}
//基本時(shí)鐘初始化
void BASIC_CLOCK(void)
{
unsigned int iq0;
BCSCTL1&=~XT2OFF; //基本定時(shí)器1 默認(rèn)關(guān)閉T2CLK 開啟T2CLK
do
{
IFG1&=~OFIFG; //默認(rèn)開啟晶振中斷 關(guān)閉晶振中斷
for(iq0=0xff;iq0>0;iq0--);
}
while((IFG1&OFIFG)!=0);
BCSCTL2=0x88; //基本時(shí)鐘狀態(tài)寄存器2
}
問題已經(jīng)解決 :更改如下配置
U1BR0 |= 0X45;
U1BR1 |= 0X00; //波特率115200 默認(rèn)一位停止位
U1MCTL = 0X16;
波特率需要詳細(xì)計(jì)算
|
|