库中的seekStationProgress函数实现有缺陷:它没有正确等待搜台完成就检查状态
应该要修改为:
void SI4735::seekStationProgress(void (*showFunc)(uint16_t f), uint8_t up_down)
{
si47x_frequency freq;
long elapsed_seek = millis();
// seek command does not work for SSB
if (lastMode == SSB_CURRENT_MODE)
return;
// 只调用一次搜台命令
seekStation(up_down, 0);
delay(100); // 等待搜台开始
// 等待搜台完成
do
{
delay(200); // 增加延时
getStatus(0, 0); // 获取状态但不清除中断
// 获取当前频率
freq.raw.FREQH = currentStatus.resp.READFREQH;
freq.raw.FREQL = currentStatus.resp.READFREQL;
currentWorkFrequency = freq.value;
if (showFunc != NULL)
showFunc(freq.value);
// 检查超时
if ((millis() - elapsed_seek) > maxSeekTime) {
break;
}
} while (!currentStatus.resp.STCINT); // 等待搜台完成中断
// 清除中断标志并获取最终结果
getStatus(1, 0);
freq.raw.FREQH = currentStatus.resp.READFREQH;
freq.raw.FREQL = currentStatus.resp.READFREQL;
currentWorkFrequency = freq.value;
}
库中的seekStationProgress函数实现有缺陷:它没有正确等待搜台完成就检查状态
应该要修改为:
void SI4735::seekStationProgress(void (*showFunc)(uint16_t f), uint8_t up_down)
{
si47x_frequency freq;
long elapsed_seek = millis();
}