This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5528:USI_Bx中断启用和标志寄存器不能按预期运行。 UCB1IE=0x03;UCB1IFG=0 don'不生效

Guru**** 2537240 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/576111/ccs-msp430f5528-usci_bx-interrupt-enable-and-flag-registers-don-t-act-as-expected-ucb1ie-0x03-ucb1ifg-0-don-t-take-effect

部件号:MSP430F5528

工具/软件:Code Composer Studio

您好,

我想为USIB1模块设置SPI主模式-处理中断。  

通过轮询UCB1STAT寄存器中的UCBUSY位进行设置-没问题。

但是当我尝试设置中断时,没有任何反应。

在CCS中,我认识到UCB1IE中两个中断启用位的启用不会产生任何效果。 也无法清除UCB1IFG寄存器。

我的初始化例程是:

void main(){

...

UCB1CTL1|=0x01;// UCSWRST重置保持
UCB1CTL0|=0x08|0x80;//主模式+正边缘样本
UCB1CTL1|=0x40;// ACLK选择。
UCB1BR0=1;// LSB时钟预分频器
UCB1BR1=0;// MSB时钟预分频器
// UCB1STAT无事可做
UCB1RXBUF=0;// RX-Buffer为零
// UCB1TXBUF没有可做的事
UCB1IE=0x03;// UCB1IE -中断已启用-无效!
UCB1IFG=0; // UCB1IFG已清除-无影响!!
// UCB1IV没有可做的事
P4sel|=0x0E;// MOSI Miso SCK;
UCB1CTL1&=0xFE;//清除UCSWRST重置保持位- SPI就绪,可供使用 
__bis_sr_register (GIE);

...

}

我的中断服务例程(从未达到)由以下人员提供:


#pragma vector=USI_B1_vector // Merke:Bezeichner ist im Linker Command File zu finden。
__interrupt void SPIHandler (void){
  字符温度;
  Switch(__均匀_in_range(UCB1IV,0x04)){

  }
   P3OUT ^= 0x04;
}

您能解释一下为什么我不能设置UCB1IE Bits吗? 或者我的错误是什么??

我现在将研究driverlib——但我更喜欢了解寄存器……谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Mathias:

    您需要选择同步模式(UCSYNC =1)才能使用SPI。 RX缓冲区从从属设备接收字符,并且不应由主控制器设置,只要TX缓冲区已准备好接收新数据且尚未写入,TXIFG将保持设置状态。 您是否根据需要设置了输入ISR的GIE位? 我建议您回顾MSP430F55xx_uscia0_SPI_09.c示例。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,感谢您的回复,

    我弄清楚了它的工作方式:在通过清除UCSWRST位来启用模块后设置IE-位-如USCI文档的1.3 1部分中所述。

    考虑到这一点-一切都正常。

    我也会检查您对USync的反馈-但到目前为止,不会遇到任何问题或不当行为。

    谢谢你
    此致
    Mathias