请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5438A 工具/软件:Code Composer Studio
您好,
我正在尝试创建一个简单的程序,它每秒发送3个字节('A','B'和'C')。 但问题是我只能得到第一个字节('A'),两者都没有出现。 如何解决此问题?
这是我的代码:
#include <MSP40.0.h>
unsigned char data [3]={'A','B','C'};
void uartSend (unsigned char *pucData, unsigned char ucLength)
{
while (ucLength !=0)
{
//等待TX缓冲区为新数据做好准备
while (!(UCA1IFG和UCTXIFG));
//将数据推送到TX缓冲区
UCA0TXBUF =*pucData;
//更新变量
ucLength --;
PucData+;}//
等待直到最后一个字节完全发送
,同时(UCA0STAT & UCBUSY);
}
int main(void){
WDTCTL = WDTPW + WDTHOLD; //停止WDT
P1DIR |=0x01; // WFP 1.0 输出
TA1CCTL0 = CCIE; // CCR0中断启用
TA1CCR0 = 3.2768万-1;
TA1CTL = tassel_1 + MC_1 + TCLR; // ACLK,upmode,CLEAR TAR
// configuración UART
UCA0CTL1 |= UCSWRST; //**将状态机置于复位**
UCA0CTL1 || UCSSEL_2; // SMCLK
UCA0BR0 = 6; // 1MHz 9600 (请参阅用户指南)
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16;// Modln UCBRSx=0,UCBRFx=0,
//过度采样
P3SEL = 0x30; // WFP 3.4 ,5 = USI_A0 TXD/RXD
UCA0CTL1 &=~UCSWRST; //**初始化USCI状态机**
__bis_sr_register (LPM3_bits + GIE); //输入LPM3,启用中断
__no_operation(); //用于调试器
}//
计时器A0中断服务例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=Timer1_A0_vector
__ISR void Timer1_A0_ISR_Isr void Timer1_A0_Compiler(void)#Elif
defined(__GA0__)
void_attribute___Timer__) Timer__Timer1
#endif
{
while (!(UCA0IFG&UCTXIFG));// USI_A0 TX缓冲器就绪?
uartSend(data,3);}
图中显示了通过UART接收的数据。
提前感谢!
此致