OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 68|回复: 0

解决了“班级(B0 E0)”为什么变“骇(E7 8F)

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-7-18
在线时间
3 小时
发表于 2026-1-8 19:20:55 | 显示全部楼层 |阅读模式
用cubemx生成cubeide工程,用vscode编代码,然后


while (1)
{
   LCD_Fill(0,0,LCD_W-1,LCD_H-1,WHITE); //白色填充整屏并延时1秒
   HAL_Delay(1000);

    //重要说明!!由于CUBEMX生成的文件是UTF8编码,cubeide也默认使用UTF8编码,即使main.c采用GB2312编码保存,cubeide也无法准确 识别GB2312编码,只能使用UTF8编码保存
    //虽然cubeide窗口->首选项->颜色和字体里提供了GB2312显示脚本,但是本质上还是UTF8编码,而TFT字库显示字符串数组需要GB2312编码
    //比如“班”这个字的 UTF-8 编码:E7 8F AD (3个字节),而TFT通过字库显示汉字,需要编译器按照GB2312来理解,就会把E7 8F (2个字节)理解为“骇”字!!
    //所以汉字用明确的GB2312编码存于数组中!!这是深远的历史遗留问题,用HEX数组百分百不会错

    //显示班级、姓名、学号并延时1秒
    uint8_t msg[] = {0xB0, 0xE0, 0xBC, 0xB6, 0x00}; // 班级
    Display_GB2312_String(0, 30, 2, msg, RED, WHITE); // y坐标增加

    uint8_t msg1[] = {0xD0, 0xD1, 0xC3, 0xFB, 0x00};//姓名
    Display_GB2312_String(0, 50, 2, msg1, BLUE, WHITE); // y坐标增加

    uint8_t msg2[] = {0xD1, 0xA7, 0xBA, 0xC5, 0x00};//学号
    Display_GB2312_String(0, 70, 2, msg2, YELLOW, WHITE); // y坐标增加

    HAL_Delay(1000);

     LCD_Fill(0,0,LCD_W-1,LCD_H-1,BLUE); // 蓝色填充整屏并延时1秒
     HAL_Delay(1000);

    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}










回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-1-16 19:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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