论坛风格切换切换到宽版
  • 458阅读
  • 2回复

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

上一主题 下一主题
离线bd7oto
 
发帖
39
只看楼主 倒序阅读 0楼 发表于: 03-15
上一篇帖子地址:https://www.hellocq.net/forum/read.php?tid=377709
在上一篇帖子中,作者公開了第2份源代碼(V0.02版本)。
這一篇帖子講解BFK6的V0.02版本源代碼中的幾個明顯BUG以及改動方法。
改動之後的源代碼將升級為V0.03版本。

———————————————BUG8:菜單關於啞音顯示的問題———————————————
接收和發射模擬啞音菜單中,00-50選項下,都顯示“關閉”,這是個BUG。
接收和發射數字啞音菜單中,211選項下,顯示空白了,這是個BUG。

在 DisplayMenu.c中找到DisplayMenu函數,
注釋掉
//selecteId = CheckCtcssInList(g_menuInfo.inputVal);
打開
selecteId = g_menuInfo.selectedItem;
即可。
這裏有個誤區,就是const u16  CTCS_TAB[51]數組中第0個數值630,其實沒有這個63.0啞音值,這個數值對應啞音關閉。

———————————————BUG9:按鍵音有破音———————————————
上一版本的固件,在菜單中,按上下鍵,即可聽到喇叭破音。
這個問題在於軟件延時函數被編譯器優化掉了,
void DelayUs(u16 n)// 1US
{
    volatile u16 t = n * 8;
    while(t--)
    {
    }
}
void DelayMs(u16 n)
{
   volatile u16 i=0;
   for (i=0;i<n;i++)
    {
        DelayUs( 1000 );
    }
}
這裏需要找到這兩個函數,將内部計數器改成volatile類型,即可避免軟件延時被編譯器優化。

———————————————BUG10:收音機頻率顯示不美觀———————————————
在DisplayFm.c中,找打FmDisplayFreq函數,改下
len = sprintf(disBuf,"%d.%d M",fmInfo.freq/10,fmInfo.freq%10);

以88.8爲例,屏幕顯示 “88.8 M”,相比於以前美觀了很多。
其實這個地方還有一個BUG,在收音機模式下,按上下鍵,喇叭仍然能聽到破音,這個以後再修改。


———————————————BUG11:優化了程序架構———————————————
刪除掉了程序中沒有用的文件,只保留用到的。
makefile其實也用不到。
整個工程文件按照比較正點原子的風格來排列。

———————————————BUG12-N:其它尚未發現的BUG———————————————
這個以後再慢慢修改。

更改完上述BUG的源程序(V0.03版本)下載:
固件(V0.03版本)在源程序的out文件夾下bfk6-202503151301.bin。


謝謝大家。
這裏是BD7OTO,2025.03.08在澳門。
[ 此帖被bd7oto在2025-03-15 13:14重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
高级硬件攻城狮+程序猿,擅长DSP、FPGA、ARM
微信:132,三两两八,8051
QQ:344266487
https://shop197337704.taobao.com/
用最严格的规范去创造最可靠的产品,服务社会,创造价值
离线王雷生
发帖
1132
只看该作者 1楼 发表于: 03-15
呼号:BG6OJX
QQ:68330835
电话:19939000388
地址:河南 济源 沁园 南夫 胜利街北六巷四十六号
离线李铁柱79
发帖
7308
只看该作者 2楼 发表于: 03-19
学习了,我的K6还躺在包装盒里呢
呼号:BH6JDR,李铁柱 设备:ic-706MKII ic-7200  籍贯:河南南阳
现工作地址:
郑州市金水区纬五路-东明路 手机1823718382九