在使用msp430afe253调试一个串口程序,程序如下:
DCOCTL = DCO0+DCO1;
BCSCTL1 = RSEL2+RSEL1+RSEL0; // 配置时钟,主时钟1MHz //
BCSCTL2 = 0x00;; // 配置时钟,SMCLK为1MHz //
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1SEL = BIT3; // P1.3=TXD
P2SEL = 0x00;
ME1 |= UTXE0; // Enable USART0 TXD
U0CTL |= CHAR; // 8-bit character
U0TCTL |= SSEL1; // BRCLK= SMCLK
U0BR0 = 0x68;
U0BR1 = 0x00;
U0MCTL = 0x10; // 波特率9600Hz
U0CTL &= ~SWRST; // Initialize USART state machine
IE1 |= UTXIE0; // Enable USART0 TX interrupt
TXBUF0=0x3c;
__bis_SR_register(GIE); // Enter all interrupts
while(1);
#pragma vector=USART0TX_VECTOR
__interrupt void USART0TX(void)
{
TXBUF0 = 0xaa;
}
我现在全速运行时无法进入中断,但是全速运行中stop一下就能很快进入中断了,但是在中断中无法发送出去信号,我用示波器检测捕捉不到信号。另外我关闭串口中断,在主程序中用查询方式发送串口数据,也无法发送出去。但是之前我在主程序中能发出去,后来忘了改了哪一块儿现在发不了了。请大神们帮帮忙吧。
此帖出自
小平头技术问答
这句话TXBUF0 = 0xaa;执行以后才能进入发送中断大概,
你试试,记不太清了,好像是这样的
一周热门 更多>