一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: cdhigh
收起左侧

[其他综合] 开源一个单片机自动化中文取模小工具

[复制链接]
发表于 2022-7-16 09:21 | 显示全部楼层
学习了,试试看。。。。
发表于 2022-7-16 12:36 | 显示全部楼层
下载来看看,谢谢!
发表于 2022-7-16 16:32 | 显示全部楼层
谢谢分享,收藏备用。
 楼主| 发表于 2022-7-16 18:22 | 显示全部楼层
话说为何m328v6/m328v7为何那么方便的汉化就是因为AVR gcc编译器的一个限制:其FLASH字符串必须额外定义,否则会占有内存空间
对比如下:
字符串输出函数定义,两个编译器函数声明都一样,实现有一点点区别(gcc需要使用 pgm_read_byte()):
void drawText(const char* txt) {
    ....
}


ICCAVR编译器环境下的调用(常量字符串自动被当成FLASH字符串,不会占用内存空间):
drawText("我是FLASH字符串");

AVR GCC编译器环境下的调用:
drawText("我是RAM字符串");  //这个字符串会被放到内存,占有内存空间

const char r_txt[] PROGMEM = "我是FLASH字符串";
drawText(r_txt);      //这个字符串才被当作FLASH字符串,不会占用内存空间

之前开始用的时候还觉得比较麻烦,但在中文化时发现好爽啊,就只需要翻译一个文件里面的字符串就行了,而且编译时很方便就能切换编译哪个语种版本
要实现运行时切换语种也不需要费多大事,但是为了运行效率和空间效率,就不做运行时切换了。
发表于 2022-7-20 17:27 | 显示全部楼层
谢谢分享,收藏备用。
发表于 2022-8-17 19:35 | 显示全部楼层
谢谢分享
发表于 2022-8-18 16:13 | 显示全部楼层
谢谢分享,收藏备用。
发表于 2022-8-28 15:55 来自手机 | 显示全部楼层
感谢分享。。。。
发表于 2022-8-31 20:33 | 显示全部楼层
楼主十分强大啊
发表于 2022-8-31 22:55 | 显示全部楼层
很实用的小工具,谢谢

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-28 05:33 , Processed in 0.056366 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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