找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

nrf51822移植stm32單片機(jī) LCD程序的問題

查看數(shù): 2381 | 評論數(shù): 21 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2024-1-15 23:55

正文摘要:

單片機(jī)nrf51822,在移植stm32lcd的例程中發(fā)現(xiàn)程序報(bào)錯,報(bào)錯顯示如下 .\Peripheral\inc\FONT.h(446): error:  #144: a value of type "char [4]" cannot be used to initialize an entity of type ...

回復(fù)

ID:458247 發(fā)表于 2024-1-22 13:06
forcexda 發(fā)表于 2024-1-20 22:05
可是這個例程的字庫是調(diào)用存在rom里的字庫,不是外部字庫,根本沒有flash,我在stm32最小系統(tǒng)板上嘗試過 ...

還沒成功么
ID:384109 發(fā)表于 2024-1-21 09:27
你這里不同字號用了不同的函數(shù),那么字體的字節(jié)數(shù)就固定了,但函數(shù)里確還要計(jì)算字節(jié)數(shù),既然調(diào)試有問題,就把函數(shù)盡量簡化吧
ID:551154 發(fā)表于 2024-1-20 22:05
人中狼 發(fā)表于 2024-1-19 18:51
感覺還是你選的例程的問題,你選的例程是從外部字庫芯片取字體數(shù)據(jù),并不適合你現(xiàn)在這種字庫的調(diào)用方式

可是這個例程的字庫是調(diào)用存在rom里的字庫,不是外部字庫,根本沒有flash,我在stm32最小系統(tǒng)板上嘗試過是正常的
ID:384109 發(fā)表于 2024-1-19 18:51
感覺還是你選的例程的問題,你選的例程是從外部字庫芯片取字體數(shù)據(jù),并不適合你現(xiàn)在這種字庫的調(diào)用方式
ID:458247 發(fā)表于 2024-1-19 08:38
forcexda 發(fā)表于 2024-1-18 19:15
上圖是gb2312的運(yùn)行情況,什么字符都不顯示

你改成GB2312,把project清空一遍,中文重新打一遍,然后重新編譯下載,有stlink的話,最好是仿真看看哪一步出了問題
ID:458247 發(fā)表于 2024-1-18 15:31
forcexda 發(fā)表于 2024-1-18 15:16
不刷圖片和其他文字的話,字符出來還是有問題,主要是間距問題

拍個效果圖看看,我看代碼沒看出有啥問題。另外你用utf-8的話,應(yīng)該是無法顯示才對啊
ID:551154 發(fā)表于 2024-1-18 15:16
yzw846562238 發(fā)表于 2024-1-18 14:14
測試中文的時候,不要刷圖片、其他文字。不然你分不清是誰的問題。然后文字編碼格式要改成GB2312的,因?yàn)閡t ...

不刷圖片和其他文字的話,字符出來還是有問題,主要是間距問題
ID:458247 發(fā)表于 2024-1-18 14:14
測試中文的時候,不要刷圖片、其他文字。不然你分不清是誰的問題。然后文字編碼格式要改成GB2312的,因?yàn)閡tf-8是三個字節(jié)的,跟你這個代碼沒法兼容。

BLE.7z

1.72 MB, 下載次數(shù): 2

ID:458247 發(fā)表于 2024-1-18 13:57
forcexda 發(fā)表于 2024-1-17 19:36
代碼我打包上傳了,麻煩大佬幫我看看,ide用的是keil,版本5.23

容我看看
ID:551154 發(fā)表于 2024-1-18 11:20
人中狼 發(fā)表于 2024-1-18 10:55
好好參考一下原來的例程吧,感覺你把漢字顯示部分自己改復(fù)雜了

沒有哦,這里只做了移植,沒有改過漢字部分的代碼
ID:384109 發(fā)表于 2024-1-18 10:55
好好參考一下原來的例程吧,感覺你把漢字顯示部分自己改復(fù)雜了
ID:551154 發(fā)表于 2024-1-17 20:56
yzw846562238 發(fā)表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

似乎不行,雖然可以顯示了,但是顯示還是不算正常,無法正確顯示字符間距
ID:551154 發(fā)表于 2024-1-17 20:33
yzw846562238 發(fā)表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

剛才發(fā)現(xiàn),也有g(shù)b2312的鍋,必須把gb2312改成utff-8,不然字符不顯示,大佬這個字符編碼有沒有萬金油的那種,就是所有的字符都可以用的那種【捂臉哭】,有點(diǎn)打腦闊
ID:551154 發(fā)表于 2024-1-17 20:22
yzw846562238 發(fā)表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

大佬,我順著你的思路,把unsigned char Index[2];        改成char Index[4];居然編譯通過了,然后正常顯示字符,但是我還是沒明白為什么[笑哭],大佬你看一下代碼,給我指點(diǎn)一下吧
ID:551154 發(fā)表于 2024-1-17 19:36
yzw846562238 發(fā)表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

代碼我打包上傳了,麻煩大佬幫我看看,ide用的是keil,版本5.23

BLE.7z

464.4 KB, 下載次數(shù): 4

ID:458247 發(fā)表于 2024-1-17 13:01
forcexda 發(fā)表于 2024-1-16 21:18
忘了加代碼了,那個結(jié)構(gòu)體是這樣的
typedef struct
{

"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,

感覺是你的中文被解析成了4字節(jié),其實(shí)gb2312應(yīng)該是2字節(jié)的。
ID:458247 發(fā)表于 2024-1-17 13:00
forcexda 發(fā)表于 2024-1-16 21:18
忘了加代碼了,那個結(jié)構(gòu)體是這樣的
typedef struct
{

是keil么,還是其他ide,代碼看著沒啥問題,要不把工程打包發(fā)上來看看?
ID:551154 發(fā)表于 2024-1-16 21:18
yzw846562238 發(fā)表于 2024-1-16 08:58
你用的keil?中文編碼格式用的是GB2312嗎?typFNT_GB16這個結(jié)構(gòu)體類型定義的可能存在問題,在這個單片機(jī)編譯 ...

忘了加代碼了,那個結(jié)構(gòu)體是這樣的
typedef struct
{
        unsigned char Index[2];       
        unsigned char Msk[32];
}typFNT_GB16;


const typFNT_GB16 tfont16[]={
"中",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,
0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,/*"中",0*/
"景",0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x80,0x00,0xFF,0x7F,0x00,0x00,
0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x80,0x00,0x84,0x10,0xA2,0x20,0x40,0x00,/*"景",1*/
"園",0x00,0x00,0xFE,0x3F,0x02,0x20,0xF2,0x27,0x02,0x20,0x02,0x20,0xFA,0x2F,0x22,0x21,
0x22,0x21,0x22,0x21,0x12,0x29,0x12,0x29,0x0A,0x2E,0x02,0x20,0xFE,0x3F,0x02,0x20,/*"園",2*/
"電",0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,
0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F,/*"電",3*/
"子",0x00,0x00,0xFE,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x80,0x01,0x80,0x00,0xFF,0x7F,
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00,/*"子",4*/

};
ID:551154 發(fā)表于 2024-1-16 18:53
yzw846562238 發(fā)表于 2024-1-16 08:58
你用的keil?中文編碼格式用的是GB2312嗎?typFNT_GB16這個結(jié)構(gòu)體類型定義的可能存在問題,在這個單片機(jī)編譯 ...

是GB2312,我需要修改成UTF-8嗎,大佬經(jīng)驗(yàn)好豐富,一眼就看出來是GB2312編碼格式了,麻煩大佬細(xì)說一下,我還是沒明白應(yīng)該怎么修改
ID:458247 發(fā)表于 2024-1-16 08:58
你用的keil?中文編碼格式用的是GB2312嗎?typFNT_GB16這個結(jié)構(gòu)體類型定義的可能存在問題,在這個單片機(jī)編譯器上不能這么寫

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表