对照用MSP430AFE221的户手册编写一个串口的发送程序
调试了几个星期P1.3串口的发送端没有任何数据,也怀疑过自己的程序和设计电路出问题,但是请教多名430
工程师都没有发现UART配置有何问题,有人建议说是刚出芯片的前几批可能会存在一些问题,所以想来问下这
款芯片的串口是否还存在一些问题,以下有部分程序代码:
现象:用示波器观察P1.3口,一直为高电平,没有数据从中发送出来
部分程序源代码:
//时钟模块选择XT2
void Clk_Init(void)
{
uint i;
P2SEL |= BIT6 + BIT7; //P2.6、P2.7为外部时钟引脚
BCSCTL1 &= ~XT2OFF ; //启用XT2
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2 + SELS ; //MCLK=SMCLK=XT2; 选择主从时钟源
BCSCTL3 |=BIT8; // XT2范围选择 3-16M
}
//按照用户手册和MSP430AFE221.H文件进行配置的 UART
void Uart_Init(void)
{
U0CTL = SWRST;
U0CTL |= CHAR ;//8-BIT
U0TCTL |=SSEL1; //SSEL1 ;//UCLK = SMCLK 串口波特率的时钟源
U0BR0 = 0x0A; //12000 000 / 600 =0X4E20
U0BR1 = 0x1A;
U0MCTL = 0x00;
ME1 |=UTXE0 + URXE0;//ENABLE R&T
U0CTL &= ~SWRST;//先设置SWRST为1 ,然后取反 默认为1
IE1 |= UTXIE0 + URXIE0;
P1SEL |=BIT3 + BIT4; //选择TXD /RXD功能
P1DIR |=BIT3;//发送设置为输出
_EINT(); //开总中断
// IE1 |=URXIE0 ;
}
//发送数据采用查询中断,并用P1.1引脚连接LED进行闪烁指示
各种初始化;
while(1)//查询中断。LED闪烁
{
while(!(IFG1 & UTXIIFG0))
TXBUF0 = 0X41;
P1OUT ^=BIT1;
Delay_ms(500);
}