浦江一水
发表于 2024-6-5 14:47:48
感谢 STC芯征程 版主的鼓励和鲜花。
浦江一水
发表于 2024-6-5 14:55:40
NTC 发表于 2024-6-5 10:20
不是用STC32_STC8_usb.h 替换 STC32G.h, 也替换不了。
删除当前文件夹中的STC32G.H,使用系统中的STC32G.H。
添加STC32_STC8_usb.h仅仅是为了增加u8和u16的定义,不是替代。
明白了,是我理解偏差了,很抱歉。
浦江一水
发表于 2024-6-5 17:11:30
为什么要“删掉文件夹中的 STC32G.H 文件,使用系统中的。”?
出于好奇,一探究竟。
原来的编译截图是这样的:
此时,STC32G.H文件在当前文件夹内,文件的开始就有 #include <intrins.h>的。
编译结果: 0错误,0警告。
删除当前文件夹内的STC32G.H文件。(编译器只能找系统中的STC32G.H了)
再编译... 果然...
出现找不到_nop_()的三条错误提示... 3错误...
打开系统中的...C251\INC\STC\STC32G.H
一看, STC32G.H文件开始是没有#include <intrins.h>的.
于是就建议在主程序中添加#include <intrins.h>. 否则编译就要错的...
探索到此, 是不是感觉兜了一个圈? 先删了后再添加, 多此一举了? 而且又缩小了intrins.h使用范围。
不过,对我等新手有一个重要的启示, 那就是STC32G.H是有可能多变的,不能一概而论,不能全部指望使用所谓系统中的。
于是再探...
在我计算机D盘(编程分区)内是搜索“STC32G.H”,结果找到一大堆。根据文件大小归纳了一下:
这些文件来自官方的屠龙刀DEMO、实验箱DEMO、降龙棍DEMO等文件包。
上述文件列表中,原文件名都是STC32G.h, 图示列表的文件名括弧内是文件长度字节。
显然,文件大小不同,内容一定是不同的。
其中STC32G(65526).h和STC32G(74002).h(这是来自系统的73K)两个文件的开始都没有#include <intrins.h>。
其余STC32G(xxxxx).H文件都含有 #include <intrins.h>,占绝大多数。
那么再思考一下,所谓系统中的STC32G.h是从何而来的?个人认为不会是由C251安装时自动生成的,而是STC-ISP软件在添加STC型号时加进去的。
那么再思考一点,为什么官方的DEMO程序包中都有一个COMM文件夹,其中存放着与DEMO板有关的相应的STC32G.h文件呢? 为什么不统一使用系统中的呢?
显然, STC32G.h 文件不是一成不变的, 而是要根据实际需要再组织来定义配置的。
基于这一点因素,将STC32G.h放在当前文件夹中(随实验项目放在一起)是必要的。
否则发送给别人使用,由于编译环境的不同,通常是要出错的。
即便是自己,若以后变换项目或变换编译环境了,也是会产生麻烦的。
在此有一个小小的建议:
官方STC-IAP软件是否可考虑,在要加入系统的STC32G.H文件中添加 #include <intrins.h>,
至少理由是软件提供的延时函数代码中包括_nop_()函数, 需要这个包含,这样可减少一些新手学习者们的困惑。
科学妞妞
发表于 2024-6-5 18:58:17
本帖最后由 科学妞妞 于 2024-6-5 19:00 编辑
浦江一水 发表于 2024-6-5 17:11
为什么要“删掉文件夹中的 STC32G.H 文件,使用系统中的。”?
出于好奇,一探究竟。
现在新的程序,下载后,直接打开后,编译,结果如下,见图超限了吗
浦江一水
发表于 2024-6-6 08:26:44
科学妞妞 发表于 2024-6-5 18:58
现在新的程序,下载后,直接打开后,编译,结果如下,见图超限了吗
明白了。
是的,是超限了。C251未“注册”,编译代码限制2K以内。
现在面临的首要问题是“如何建立C251的编译环境”。先看看官方的手册。再......
科学妞妞
发表于 2024-6-6 08:43:41
浦江一水 发表于 2024-6-6 08:26
明白了。
是的,是超限了。C251未“注册”,编译代码限制2K以内。
现在面临的首要问题是“如何建立C251的 ...
好,知道了
科学妞妞
发表于 2024-6-6 09:03:07
本帖最后由 科学妞妞 于 2024-6-6 09:12 编辑
科学妞妞 发表于 2024-6-6 08:43
好,知道了
新的程序是完美的例程了
Rebuild target 'Target 1'
compiling Main.C...
compiling LCD_7735.C...
linking...
Program Size: data=56.0 edata+hdata=256 xdata=0 const=8457 code=37839
creating hex file from ".\OUT\TestLCD7735"...
".\OUT\TestLCD7735" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:02
科学妞妞
发表于 2024-6-6 10:03:07
一水坛友的,那个有4个按键的控制(128x160)彩屏的IC7735的程序,也是不错的例程,比方说,进入,是个列表菜单,上下按钮,再选择,确认后,进入不同的页面,看个文字,或者图片,控制个灯,什么的。也不错,满是实际需求,也值得爱好者们,认真学习的,最重要的是一水坛友的,编程风格很好,严谨细致,备注和布局,可说为爱好者编程楷模,期待,坛友更新
浦江一水
发表于 2024-6-6 11:14:50
科学妞妞 发表于 2024-6-6 09:03
新的程序是完美的例程了
Rebuild target 'Target 1'
能顺利通过编译,真替你高兴。
好事多磨,这个实验过程虽有曲折,但也应该是有收获和快乐的。
留意这个过程中的各个知识点......
浦江一水
发表于 2024-6-6 21:08:43
科学妞妞 发表于 2024-6-6 10:03
一水坛友的,那个有4个按键的控制(128x160)彩屏的IC7735的程序,也是不错的例程,比方说,进入,是个列表菜 ...
看到你这个回复,再说两句:
1。那个带4个按键的屏, 看似是一个测试带键屏的小实验, 其实就是一个小应用程序的框架, 可扩展, 是比较实用的。让你看出来了。
2。感谢你对我编程的认可,有点夸奖啦。不敢说“风格”,只是长期编程的自我习惯,在专家看来,或许是不规范的,更不敢称“楷模”了。