论坛风格切换切换到宽版
  • 1280阅读
  • 5回复

跟著BD7OTO學習寶峰K6對講機固件編譯開發2 [复制链接]

上一主题 下一主题
离线bd7oto
 
发帖
39
只看楼主 倒序阅读 0楼 发表于: 01-11
———————————————開場白———————————————
上一篇帖子地址: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重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
高级硬件攻城狮+程序猿,擅长DSP、FPGA、ARM
微信:132,三两两八,8051
QQ:344266487
https://shop197337704.taobao.com/
用最严格的规范去创造最可靠的产品,服务社会,创造价值
离线ba6iv
发帖
1293
只看该作者 1楼 发表于: 01-12
先调养好身体,祝楼主早日康复。
__________________
The DX chaser.
QQ: 1 8 8 4 0 3 5 8 7
https://shop183408945.taobao.com/
离线bi4jcp
发帖
49
只看该作者 2楼 发表于: 01-14
祝早日康复
离线bg7doz
发帖
498
只看该作者 3楼 发表于: 01-14
学习了,谢谢分享!
离线m7vgn
只看该作者 4楼 发表于: 02-02
I hope you have made a full recovery bd7oto and are back to being fighting fit! 73
离线BG2WAH
发帖
524
只看该作者 5楼 发表于: 02-02
健康是1,有了这个1,后面的0才有意义
祝早日康复!