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.

[参考译文] Starterware/CC2541:CC2541 -模拟比较器中断问题

Guru**** 2553460 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/575373/starterware-cc2541-cc2541---analog-comparator-interrupt-issue

器件型号:CC2541

工具/软件:Starterware

您好!

我正在 CC2541上设置模拟比较器、一切都正常、但有问题:即使没有与指定中断相关的标志、也会调用中断服务例程?

在软件初始化中、我执行以下操作:

 EA = 1;//通过设置相应的使能位来单独启用或禁用每个中断源。
 P0IFG = 0;//清除 PORT0的交叉标志
 PICTL = 0x01;//在 P0的 fallaing 边沿上进行交叉
 CMPCTL |= CMPCTL_EN;//为 P0_5和 P0_4启用比较器
 P0IEN = 0x20;//启用 PORT0_5中断
 P0IE = 1;//启用 PORT0中断    
 P0IFG = 0;//清除 PORT0的交叉标志

以下是中断服务例程:


#pragma vector = P0INT_vector
_interrupt void PORT0_ISR (void)


 P0IE = 0;//禁用 PORT0中断  
 P0IEN = 0x00;//禁用 PORT0_5中断    
   
 IF (P0IFG 和0x20)
   PULSE_INPUT_COUNTER++;
 
 //清除 PORT0_5中断标志
 P0IFG = 0;
 CMPCTL = 0x02;
 
 P0IE = 1;//启用 PORT0中断
 P0IEN = 0x20;//启用 PORT0_5中断   

谢谢你

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

    您好!

      您还需要清除 CPU 中断标志:

    //使用 R/W0方法清除引脚的状态标志、请参阅数据表。
    P0IFG =~P0IFG;
    //清除 P0的 CPU 中断状态标志。
    P0IF = 0; 

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