大家好,
我正在使用MSP432P401M微控制器。 我想在TXBUF中传输0x55值。 该值是根据UART中断传输的。
我的代码是:-
包括"MSP432P401M.h"
void init_UART (void)
{
//配置UART引脚
P1->SEL0 |= BIIT2 | BIT3;//将2-UART引脚设置为辅助功能
//配置UART
EUSCI_A0->CTLW0 |= EUSCI_A_CTLW0_SWRST;//将eUSCI置于复位状态
EUSCI_A0->CTLW0 = EUSCI_A_CTLW0_SWRST | EUSCI_B_CTLW0_sel__SMCLK;//EUSCI_B_CTLW0_sel__ACLK;//在复位时保持eUSCI
// EUSCI_B_CTLW0_sel__SMCLK;//为SMCLK配置eUSCI时钟源
//波特率计算
//1200万/(16*9600)=9600= 78.125
//分数部分= 0.125
//用户指南表21-4:UCBRSx = 0x10
// UCBRFx = int ((78.125 78)*16)= 2
EUSCI_A0->BRW =78;// 1200万/16/9600</s>9600
EUSCI_A0->MCTLW =(2 << EUSCI_A_MCTLW_BRF_OFS)| EUSCI_A_MCTLW_OS16;
EUSCI_A0->CTLW0 &=~EUSCI_A_CTLW0_SWRST;//初始化eUSCI
EUSCI_A0->IFG &=~EUSCI_A_IFG_RXIFG;//清除eUSCI RX中断标志
// EUSCI_A0->IFG &=~EUSCI_A_IFG_TXIFG;
EUSCI_A0->IE |= EUSCI_A_IE_RXIE;//启用USI_A0 RX中断
//EUSCI_A0->IE |=EUSCI_A_IE_TXIE;
//从ISR退出时启用睡眠
SCB->SCR || SCB_SCR_SLEEPONEXIT_MSK;
//启用全局中断
//__enable_IRQ();
P1->DIR || BIT0;
P1->out &=~BIT0;
// EUSCI_A0->TXBUF=0x55;
//在NVIC模块中启用eUSCIA0中断
NVIC->ISER[0]=1<<(EUSICIA0_IRQn)和31);
}
// UART中断服务例程
void EUSCIA0_IRQHandler (void)
{
EUSCI_A0->TXBUF=0x55;
}
当我调试时,代码值0x55不在TXBUF中传输,这意味着不生成UART中断。当我在 主代码(void init_UART)中添加EUSCI_A0->TXBUF=0x55并且中断为comment out时,0x55值在TXBUF中传输。
为什么?