我用两块MSP430F168做全双工异步通信
用ACLK波特率设置成了19200还是非常慢,这边发了过了十几秒那边才显示,
用8M的TX2,波特率设置成115200,传的是很快,目测同步但数据都是错的,,用示波器看了TX2发现时钟不稳定,
按说19200的波特率已经非常快了,但为什么传的这么慢呢
帮我看看是什么问题?
程序:
#include "msp430x16x.h"
#include "KeyValue.h" //矩阵键盘头文件
#include "CLK_config.h" //时钟配置头文件
void IO_init()
{
P3SEL|=0x30; //用的TX0和RX0
P5DIR|=0xff; //用P5显示另一块单片机传来的键值
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
XT2_CLK(); //使用XT2高速晶体振荡器
ME1|=UTXE0+URXE0;
UCTL0|=CHAR;
UTCTL0|=SSEL0; //用ACLK
UBR00=0x01; //波特率19200
UBR01=0x00;
UMCTL0=0xdb;
UCTL0&=~SWRST;
IE1|=URXIE0;
_EINT();
keyIO_init(); //键盘IO初始化
IO_init();
while(1)
{
keyvalue(); //运行键盘扫描
if(KeyFlag==1) //如果有按键按下
{
KeyFlag=0;
TXBUF0=key; //把键值发送出去
}
}
}
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx()
{
while(!(IFG1&UTXIFG0));
P5OUT=RXBUF0; //接收的键值在另一块单片机的P5上显示
}
此帖出自
小平头技术问答
一周热门 更多>