请教下有关蓝牙MCU的625us的计时

1、以CH573为例,看代码和相关说明是借用RTC的时钟作为625us的定时,但在相应中断中没有看到相应的处理(因为我理解的操作系统都是中断里调用系统调度和tick处理,但在BLE的例中没有看到),和tick标记等,难道是在TMOS_SystemProcess();中不断的中循环处理的吗,读取RTC的tick值吗(感觉又不可能,这样要不断的判断tick是否够625us效率肯定低)?

2、另外用32768的时钟来定时625us也并非整数,所以很疑惑,看了好久程序,请指点下,谢!!

1.tmos并不是实时操作系统(实时操作系统对ram资源消耗较大),tmos管理的任务是对实时性要求不高的任务,在空闲时处理即可,如果开发时有对时间要求高的事件需要处理,使用mcu的定时器来处理.
2.32768的时钟来定时625us也并非整数,BLE连接对于时间要求很高,RTC计数的误差是通过BLE内部定时器补偿解决,而任务本身存在误差可不做额外处理.


感谢你的回复,如果这个625us的定时不要求太准的话,那它是如保来保证跳频的通讯的呢?

我测试了CH573的RF_PHY_Hop的范例,可能是LIB库的原因,看不到相关跳频部分。另外发现 这个范例只可以一对一的通讯。

可否修改,实现多对多或者一对多的跳频通讯呢(如果能实现,那就漂亮了!)


内部会有补偿来解决RTC误差,目前例程只支持一对一通信的跳频。



只有登录才能回复,可以选择微信账号登录