使用了 CH573EVT\EVT\EXAM\BLE\Central 例程, 在设置事件执行的超时时间较大的时候似乎不会执行, 比如添加下图中的
tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 );
但是将参数改小, 比如16的时候
tmos_start_task( halTaskID, HAL_TEST_EVENT, 16 ); // 添加一个测试任务
能正常进回调
之后为了测试回调超时准确性, 在硬件层事务处理函数中更改下部分
使用串口查看工具, 开启时间戳显示, 发现并不是很对
虽然给的是超时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的系统时钟是挺准的