找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

nrf51822移植stm32单片机 LCD程序的问题

查看数: 2552 | 评论数: 21 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-1-15 23:55

正文摘要:

单片机nrf51822,在移植stm32lcd的例程中发现程序报错,报错显示如下 .\Peripheral\inc\FONT.h(446): error:  #144: a value of type "char [4]" cannot be used to initialize an entity of type ...

回复

ID:458247 发表于 2024-1-22 13:06
forcexda 发表于 2024-1-20 22:05
可是这个例程的字库是调用存在rom里的字库,不是外部字库,根本没有flash,我在stm32最小系统板上尝试过 ...

还没成功么
ID:384109 发表于 2024-1-21 09:27
你这里不同字号用了不同的函数,那么字体的字节数就固定了,但函数里确还要计算字节数,既然调试有问题,就把函数尽量简化吧
ID:551154 发表于 2024-1-20 22:05
人中狼 发表于 2024-1-19 18:51
感觉还是你选的例程的问题,你选的例程是从外部字库芯片取字体数据,并不适合你现在这种字库的调用方式

可是这个例程的字库是调用存在rom里的字库,不是外部字库,根本没有flash,我在stm32最小系统板上尝试过是正常的
ID:384109 发表于 2024-1-19 18:51
感觉还是你选的例程的问题,你选的例程是从外部字库芯片取字体数据,并不适合你现在这种字库的调用方式
ID:458247 发表于 2024-1-19 08:38
forcexda 发表于 2024-1-18 19:15
上图是gb2312的运行情况,什么字符都不显示

你改成GB2312,把project清空一遍,中文重新打一遍,然后重新编译下载,有stlink的话,最好是仿真看看哪一步出了问题
ID:458247 发表于 2024-1-18 15:31
forcexda 发表于 2024-1-18 15:16
不刷图片和其他文字的话,字符出来还是有问题,主要是间距问题

拍个效果图看看,我看代码没看出有啥问题。另外你用utf-8的话,应该是无法显示才对啊
ID:551154 发表于 2024-1-18 15:16
yzw846562238 发表于 2024-1-18 14:14
测试中文的时候,不要刷图片、其他文字。不然你分不清是谁的问题。然后文字编码格式要改成GB2312的,因为ut ...

不刷图片和其他文字的话,字符出来还是有问题,主要是间距问题
ID:458247 发表于 2024-1-18 14:14
测试中文的时候,不要刷图片、其他文字。不然你分不清是谁的问题。然后文字编码格式要改成GB2312的,因为utf-8是三个字节的,跟你这个代码没法兼容。

BLE.7z

1.72 MB, 下载次数: 2

ID:458247 发表于 2024-1-18 13:57
forcexda 发表于 2024-1-17 19:36
代码我打包上传了,麻烦大佬帮我看看,ide用的是keil,版本5.23

容我看看
ID:551154 发表于 2024-1-18 11:20
人中狼 发表于 2024-1-18 10:55
好好参考一下原来的例程吧,感觉你把汉字显示部分自己改复杂了

没有哦,这里只做了移植,没有改过汉字部分的代码
ID:384109 发表于 2024-1-18 10:55
好好参考一下原来的例程吧,感觉你把汉字显示部分自己改复杂了
ID:551154 发表于 2024-1-17 20:56
yzw846562238 发表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

似乎不行,虽然可以显示了,但是显示还是不算正常,无法正确显示字符间距
ID:551154 发表于 2024-1-17 20:33
yzw846562238 发表于 2024-1-17 13:01
"unsigned char [2]"
  "???",0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10 ...

刚才发现,也有gb2312的锅,必须把gb2312改成utff-8,不然字符不显示,大佬这个字符编码有没有万金油的那种,就是所有的字符都可以用的那种【捂脸哭】,有点打脑阔
ID:551154 发表于 2024-1-17 20:22
yzw846562238 发表于 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];居然编译通过了,然后正常显示字符,但是我还是没明白为什么[笑哭],大佬你看一下代码,给我指点一下吧
ID:551154 发表于 2024-1-17 19:36
yzw846562238 发表于 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, 下载次数: 4

ID:458247 发表于 2024-1-17 13:01
forcexda 发表于 2024-1-16 21:18
忘了加代码了,那个结构体是这样的
typedef struct
{

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

感觉是你的中文被解析成了4字节,其实gb2312应该是2字节的。
ID:458247 发表于 2024-1-17 13:00
forcexda 发表于 2024-1-16 21:18
忘了加代码了,那个结构体是这样的
typedef struct
{

是keil么,还是其他ide,代码看着没啥问题,要不把工程打包发上来看看?
ID:551154 发表于 2024-1-16 21:18
yzw846562238 发表于 2024-1-16 08:58
你用的keil?中文编码格式用的是GB2312吗?typFNT_GB16这个结构体类型定义的可能存在问题,在这个单片机编译 ...

忘了加代码了,那个结构体是这样的
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 发表于 2024-1-16 18:53
yzw846562238 发表于 2024-1-16 08:58
你用的keil?中文编码格式用的是GB2312吗?typFNT_GB16这个结构体类型定义的可能存在问题,在这个单片机编译 ...

是GB2312,我需要修改成UTF-8吗,大佬经验好丰富,一眼就看出来是GB2312编码格式了,麻烦大佬细说一下,我还是没明白应该怎么修改
ID:458247 发表于 2024-1-16 08:58
你用的keil?中文编码格式用的是GB2312吗?typFNT_GB16这个结构体类型定义的可能存在问题,在这个单片机编译器上不能这么写

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表