CH571F 作为蓝牙主机时TMOS系统时钟不对

使用了 CH573EVT\EVT\EXAM\BLE\Central 例程, 在设置事件执行的超时时间较大的时候似乎不会执行, 比如添加下图中的

tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 );

image.png

但是将参数改小, 比如16的时候

tmos_start_task( halTaskID, HAL_TEST_EVENT, 16 );    // 添加一个测试任务

能正常进回调

之后为了测试回调超时准确性, 在硬件层事务处理函数中更改下部分

image.png

使用串口查看工具, 开启时间戳显示, 发现并不是很对

image.png

虽然给的是超时28ms, 但是实际上是 2.66秒

算了两个, 给的参数和实际时间的比值基本差不多


那开头的

tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 );

跑不了其实应该是不对的, 只是系统时基不对, 给的参数为1600, 但是实际并不是1秒, 按照上方的比例关系实际为94.999秒

实际也确实在运行较长时间后进事件处理


测试了一下RTC, 在死循环发送秒

__attribute__((section(".highcode")))
__attribute__((noinline)) void
Main_Circulation()
{
    static uint16_t s;
    while (1)
    {
        TMOS_SystemProcess();
        RTC_GetTime(0, 0, 0, 0, 0, &s);
        PRINT("%u ", s);
    }
}

发送的数据为RTC的秒, 这个数据在经过非常长的时间后变成了1


看到一个帖子, 感觉是同样的问题

https://www.wch.cn/bbs/thread-72642-1.html

我目前手里没有ch573, 不好说在573上是否能正常使用


蓝牙从机例程上测试没有问题, TMOS的系统时钟是挺准的

好像解决了, 外部32.768KHz晶振没起振, 芯片引脚虚焊, 重新着重焊了一下低速晶振的那两个脚就行了


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