微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLE-CC254x-1.4.1中主机工程使用定时器中断定时产生LED闪烁信号,在与从机连接前启动定时器,用Timer3或Timer4定时闪烁周期会变慢,用Timer1不会

BLE-CC254x-1.4.1中主机工程使用定时器中断定时产生LED闪烁信号,在与从机连接前启动定时器,用Timer3或Timer4定时闪烁周期会变慢,用Timer1不会

时间:10-02 整理:3721RD 点击:

如题。

主机与从机连接采用找到信号最强的广播中的从机,并与之连接的方法。主机与从机都采用CC2541.

产生定时器中断的方法用了两种:

1、直接设置相关定时器的特殊寄存器。

2、采用ZStack-CC2530-2.3.0-1.4.0中的hal_timer.c(这是能找到的最新的hal_timer.c文件)。

结果都是一样。

经试验,应该是默认设置造成蓝牙发送或接收数据时,CPU会停机(halt),即相当于初始化时执行了:

HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);

可以在与从机连接前执行:

HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE);

这样可以解决Tiner3或Timer4的问题。如有需要,在完成连接后再执行:

HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);

以上虽解决了Tiner3或Timer4的问题,但Timer1的不同表现又是为什么?从协议栈的hal_timer.c的说明里,可以认为Timer1,Timer3,Timer4应该可以完全由用户使用,出现这种差别应该是用户不可更改的代码中的工作机制带来的差异,这种差异会不会带来潜在的问题?

继续做了试验,采用Timer1,在与从机连接前执行:

HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);

LED灯的闪烁变慢,和前述的Timer3或Timer4的最初的现象一致。

原因似乎已找到,问题算是解决了吧。

但是,Timer1与Timer3/Timer4在初始化时针对蓝牙发送或接收数据时,CPU会否停机的设定不同,这样做的意义何在?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top