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.

[参考译文] CC2541:多次定义中断服务

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1020318/cc2541-interrupt-service-is-defined-multiple-times

器件型号:CC2541

尊敬的读者:

上周、我一直在努力实施中断服务来测量高频信号。 为此、我使用了 simpleBLEPeripheral 示例、因为我们的器件需要 BLE 功能。  
当 在引脚1.2上检测到下降沿时、我希望有一个中断。 该引脚上的信号频率约为27[kHz]。  

我将引脚1.2配置为 GPIO 和输入。 中断标志已被清除:
P1IFG &= 0xFB;// 11111011以清除 P1.2的标志
IRCON2 &= 0xF7;//11110111 //将中断未挂起到端口1。

中断已启用:
IEN2 |= 0x10;// 00010000 //使能(1)端口1上的中断。  
P1IEN |= 0x04;// 00000100 //在 P1.2上启用(1)中断
IEN0 |= 0x80;// 10000000 // 4. 通过将 IEN0中的 EA 位设置为1来启用全局中断。

 中断被设置为下降沿检测
PICTL |= 0x02;// 00000010 //端口0、1和2边沿配置。 P1.0 - P1.3在下降沿提供中断。


然后、我定义了中断函数:  
#pragma vector = P1INT_vector
_interrupt void P1_ISR (void){
  

执行此中断服务后、我收到警告:
"警告[W52]:公共段 INTVEC 中地址0x7B 处字节的多个定义。 它在模块"hal_key"以及模块"my_own _included_file"中定义。  

对我来说、这个警告听起来好像已经在 hal_key.c 中定义了一个中断服务 测试(不解决警告)后、程序永远不会进入我定义的中断服务、因此我怀疑程序正在使用 hal_key.c 中定义的中断服务 很遗憾、我无法在 hal_key.c 中找到此中断服务的定义位置

 

如果对此问题有任何建议或调试程序的想法、请注意我!

提前感谢