———————————————開場白———————————————
上一篇帖子地址:
https://www.hellocq.net/forum/read.php?tid=377585在上一篇帖子中,作者講解了如何編譯寶峰K6對講機(以下簡稱BFK6)單片機固件的編譯開發過程,並公開了第一份源代碼(V0.01版本)。
這一篇帖子講解BFK6的第一份源代碼中的幾個明顯BUG以及改動方法。
———————————————BUG1:開機無畫面顯示———————————————
在DisplayPowerOn.c中,
在SC5620_SetContpastRatio(g_radioInform.brightness);後面增加LCD_ClearFullBuf();
在LcdBackLightSwitch(LED_ON);前面增加LCD_UpdateFullScreen();
即可打開顯示。
其實這裏還有個BUG,就是電池電壓顯示函數尚未實現,這個以後再做。
———————————————BUG2:開機無提示音———————————————
在AppMenu.c中,找到Menu_GetSubItemPara函數,
case S_PONTONE: //开机提示音
g_menuInfo.subMaxItem = 3; //這裏以前是2,現在改成3,表示有3個可選項(即:無、音調、語音)
g_menuInfo.selectedItem = g_radioInform.OpFlag1.Bit.b2;
break;
———————————————BUG3:主界面上下差圖標反了———————————————
在DisplayMain.c中找到DisplayUpdateChFlag函數,按如下修改:
/*显示频差频率*/
if(g_ChannelVfoInfo.chVfoInfo[disAB].freqDir == 1)//下差
{
//LCD_DisplayPicture(posY,55,ICON_ADDSUB_SIZEX,ICON_ADDSUB_SIZEY,iconAdd,LCD_DIS_NORMAL);
LCD_DisplayPicture(posY,55,ICON_ADDSUB_SIZEX,ICON_ADDSUB_SIZEY,iconSub,LCD_DIS_NORMAL);
}
else if(g_ChannelVfoInfo.chVfoInfo[disAB].freqDir == 2)//上差
{
//LCD_DisplayPicture(posY,55,ICON_ADDSUB_SIZEX,ICON_ADDSUB_SIZEY,iconSub,LCD_DIS_NORMAL);
LCD_DisplayPicture(posY,55,ICON_ADDSUB_SIZEX,ICON_ADDSUB_SIZEY,iconAdd,LCD_DIS_NORMAL);
}
else //无差
{
LCD_ClearArea(posY,55,ICON_ADDSUB_SIZEX,ICON_ADDSUB_SIZEY);
}
———————————————BUG4:菜單中“寬帶”“窄帶”顯示反了———————————————
在DisplayMenu.c中,把BandCnStr數組中的“寬帶”“窄帶”顛倒一下即可,如下:
const String *BandCnStr[] =
{
"宽带",
"窄带",
};
———————————————BUG5:B區最後一次使用的信道號保存不住———————————————
RadioDataStorage.c中,
在Flash_SaveSystemRunData函数中,找到
//提取数据
memcpy(buf, (U8 *)&g_ChannelVfoInfo.channelNum, 2);
改成
//提取数据
memcpy(buf+0, (U8 *)&g_ChannelVfoInfo.channelNum[0], 2); //保存A信道号
memcpy(buf+2, (U8 *)&g_ChannelVfoInfo.channelNum[1], 2); //保存B信道号
在Flash_ReadSystemRunData函数中,找到
//数据校验正确
memcpy((U8 *)&g_ChannelVfoInfo.channelNum, buf, 2);
改成
//数据校验正确
memcpy((U8 *)&g_ChannelVfoInfo.channelNum[0], buf+0, 2); //提取A信道号
memcpy((U8 *)&g_ChannelVfoInfo.channelNum[1], buf+2, 2); //提取B信道号
———————————————BUG6:收音機剛進入時下雨聲———————————————
在AppMain.c中,找到SideKey_Process函數,
case KEYID_FM:
if(g_sysRunPara.sysRunMode == MODE_FM)
{
BeepOut(BEEP_NULL); //退出收音机模式时滴一声
ExitFmMode();
}
else
{
BeepOut(BEEP_NULL); //进入收音机模式时滴一声
EnterFmMode();
}
在进入收音机模式前滴一声,可以避免下雨声。
———————————————BUG7:收音機信道模式時進入菜單死機了———————————————
在AppMenu.c中,找到Menu_GetFmSubItemPara函数,
if(g_FMInform.fmChVfo == CHAN_MODE)
{//信道模式
//g_menuInfo.selectedItem = 0xFFFF; //这个会导致收音机信道模式时进入菜单死机
g_menuInfo.selectedItem = fmInfo.band;
}
else
{
g_menuInfo.selectedItem = fmInfo.band;
}
———————————————BUG8:菜單關於啞音顯示的問題———————————————
接收和發射模擬啞音菜單中,00-50選項下,都顯示“關閉”,這是個BUG。
接收和發射數字啞音菜單中,211選項下,顯示空白了,這是個BUG。
目前這個BUG尚未修改,以後繼續。
———————————————BUG19-N:其它尚未發現的BUG———————————————
這些作者目前沒精力繼續開發下去了。
更改完上述BUG的源程序(V0.02版本)下載:
固件(V0.02版本)下載:
源程序編譯方法在第一篇帖子中有講解(
https://www.hellocq.net/forum/read.php?tid=377585)
作者這裏推薦使用
Visual Studio Code + PlatformIO IDE的開發環境。目前作者身體不適,一直在修養中,開發進度緩慢,曾一度進度停滯。
希望大家多多努力,一起開發起來,做一款適合自己的機型。
謝謝大家。
這裏是BD7OTO,2025.01.04在澳門。
[ 此帖被bd7oto在2025-01-11 21:33重新编辑 ]