TMOS任务调度系统与使用RTC作实时时钟的冲突问题

芯片:CH32F208WBU6

板子:非评估板

RTC时钟源:外部32.768KHZ


以上是环境。

-----------------------------------------------------------------------------

已知蓝牙必须要依赖TMOS,TMOS依赖RTC且分频系数为1,例程代码如下:

RTC_SetPrescaler(1);

而使用RTC作为实时时钟,分频系数为32767,例程代码如下:

//?RTC_SetPrescaler(32767);

经过测试,在使用代码分频系数为1的情况下,RTC_IT_SEC (RTC 秒 中断)明显执行频率不是以秒为单位。仅10秒钟就执行

16万余次。

经过测试,在使用代码分频系数为32767的情况下,程序完全无法正常进行,因为所有任务的调度都是基于625微妙的。



故有以下疑问:在TMOS占用RTC的情况下,我是否只有以下三个选择去完成实时时钟的功能。

  1. 使用定时器。

  2. 使用系统时钟。

  3. 片外接一个RTC,但是208WBU6外围引脚好像没有SPI或者其他的通讯方式去控制和获取RTC数据。


rtc可以产生定时的任务,同理tmos也是可以产生定时的任务。如果某个任务需要定时去执行,则直接使用tmos处理即可;

如使用rtc的万年历功能,则直接在tmos任务里面去读取rtc的万年历时间即可;

可以使用定时器中断,与tmos不冲突,注意在定时器中断服务函数中调用的函数需要加上highcode,确保放在0等待区域运行;

208有spi接口,可以通过标准spi进行收发数据。


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