做一个项目,用的是CC2541芯片,跑蓝牙栈,要用定时器1产生一个输出信号,一帧数据,头码是2~8ms的低电平,8位数据码(高电平600us,低电平1200us表示0,高电平1200us,低电平600us表示1),尾码200us高电平。在调试时发现,有时输出的信号与预期不符,于是在定时器1中断中用IO做了一个脉冲信号来标记进入中断,用逻辑分析仪捕获的波形如下。发现,CC2541系统会每隔约100ms定时器1有约1.8ms时间无法进入中断。问:这个1.8ms左右的时间里,如果中断是被屏蔽了,那可能在哪里被屏蔽了?跑蓝牙协议栈着,应该在那一部分代码里找造成这个问题的原因?
图一:整体波形图
da qin zheng sheng:
定时器的中断级别设置为高级,你的一帧数据多长时间?
Jie He2:
回复 da qin zheng sheng:
一帧数据长度是2.4ms,用定时器做的,不阻塞CPU