尊敬的读者:
上周、我一直在努力实施中断服务来测量高频信号。 为此、我使用了 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 中找到此中断服务的定义位置
如果对此问题有任何建议或调试程序的想法、请注意我!
提前感谢