STC-51单片机闲谈
本文最后更新于 2024年10月21日 上午
STC-51单片机闲谈
STC单片机,这个网站肯定不能不提。(想截个图结果网站访问不了了emm,这网站再我想用的时候崩了不止一次了)
现在网站恢复了,可惜它不存在了,已经会自动跳转到论坛。找个网图吧,,我记得最后上面这个大绿块已经开始宣传STC32了。
我记得之前还是合肥宏晶微电子,现在手册和官网(甚至域名)都变成了深圳国芯人工智能有限公司,,,8051想破脑袋也想不出来和AI有啥关系。
STC是做89C52起家的嘛,单片机人谁还没用过STC89C52。后来做了好多1T内核的产品现代8051单片机。
C51
我觉得,现在不选择8051单片机的一大理由是,8051无法使用标准C,而只能使用C51或汇编。这一致命缺陷直接决定了移植其它平台单片机C库的困难性,而且有很多语法都用不了。如果不是为了学8051内核只是为了应用层开发,那么去做8051开发,会很耗费精力和麻烦。
笔者最初也是先接触的51单片机。之后接触esp32,stm32等支持标准C的单片机后,因为某些原因回来开发stc8,移植库用了三个小时,然后做应用层开发出现各种离奇的问题,一个6个项的enum枚举,仿真硬是给我仿真出来一个0x0A,,,
刚接触时我的编程能力也欠佳,用Keil开发也没那么不舒服,近日回来,马上改为EIDE+SDCC+VScode、Keil assistant+VScode。
SDCC虽然有更好的标准C支持,但有个致命缺陷:
The linker sdld does not support function-level linking. The standard library, therefore, uses one source file per function.
It is not possible to eliminate the unused function while linking.
无法删除没有链接的函数!全都塞最终的hex里!用寄存器还好,用库函数的话简直是,,
KeilC51都有个LX51可以REMOVEUNUSED,,
现在,我认为,不支持标准C的,gcc或者armclang(LLVM)不支持的单片机,要尽量避开。
其一是,开发环境单一,必然很不舒服
其二,开发中又有各种禁忌,出一堆问题发现是单片机不支持标准C导致的;
其三,这种单片机要么是51,要么是OTP,要么是远古单片机,要么兼备。
远古单片机的工具链和开发环境,可谓emm。或者技术比较古早的公司,只会用51,你去了不是折磨你。
前两者,我想引用别人说的一句话:你做的单片机越便宜,你的工资就越低,只有追求极致成本的公司才会选择OTP,必然也压榨你的人力成本。嵌入式行业,不那么追求四五毛成本的产品多了去了。
STC8
STC8是一个比较成熟的产品系列了,而且是STC(目前)主推的8位机产品系列,外设也比较丰富。四年前,我用了我人生中第一块8051后就开始用stc8了,用过sop16,tssop20,lqfp32,dfn8,lqfp64,lqfp48等好多块产品。
体验比较差的是我的STC8H8K64U了,居然是A版本,,A版本的外部中断,RTC等好多地方都有问题,,我怀疑STC的测试是不是义工,还是干脆找网友测试,还是姚老板催的太急了,还是TSMC不给你流片,产品这么大缺陷就直接量产,,(好像0.18um掩膜也没那么贵
由此也可以体现出STC的实际实力,,
STC的库
STC的应用团队没有人会git就算了,就是同一zip包里面,库还不一致,独立例程有一套大差不差但是版本不同的库,,,我用根目录的库,发现缺几个宏,一看,在独立例程里面是有的,,“独立”
STC ARM
STC ARM的饼,在我最痴迷STC的那段时间(2020左右)就有了,这句话我真的烂熟于心:
2021年的时候,STC官网还有这几句话:
大量客户提前预付定金,支持 STC 提前抢2023年的产能,确保维持 近16年 现货稳定供应的水平,这是大众心态,都是合理正确思维模式。成本持续上升/要抢,大势所趋,仓中有米,芯不慌,屯够/才是您的/不一定让您屯/只有长期合作的老客户才可以…
大批 STC 客户来电,请求 STC 价格适当调整,有底气去抢晶圆,抢封测产能,不要抢不到晶圆,抢不到封测产能,搞成欧美同行 订货 24 - 48 周 还交不了货,最后遭殃的还是用户。大批 STC 客户来电请求 STC MCU 价格合理上浮,积蓄战力,加速 STC 32-BIT M4 MCU 的推出,将 32-BIT MCU的价格拉回合理价位。
后来变成M33,后来变成STAR-MC1
至于为什么到现在都不出,我问老姚,老姚这么说:
同一天(2024/1/14):
《其实已经设计好了》
《STC33上面做好的东西都在,往51上移植》
看来不光我对STC有意见?
网友:“1年之内,都不要浪费时间在STC新出的ARM-M4”,你同意吗?-电子工程专辑 (eet-china.com)
STC32
STC32我认为是STC比较奇怪的产品线,因为用的是80251核,是英特尔在1996年推出的,不知道STC为什么沉迷于古老的8051系列内核。
8051还好,Keil,IAR,SDCC有三个编译器可用,80251就只有Keil C251一个编译器了。STC近几年也忙着摸索80251。说来,我之前申请了STC16的样品,后来这产品线就砍了,,
另外,STC买了真不少域名啊
STC新官网:www.STCAI.com
STC官方论坛:www.STCAImcu.com
老官网: www.STCMCUdata.com
https://www.stcisp.com/ (这个的话不是官方的,但是这风格可谓一脉相传,而且宣传语都是这种风格)
我的二次入坑
其实根本原因是这个电路板的电路设计和程序设计差了一年多,那个时候我还没见识到标准C的魅力。有一个项目需要很小的封装,本来想上TSSOP20,后来发现DFN8也刚好够用,就用DFN8了。
然后,如C51章节所说的。。
项目打算重开了,用py32的QFN16/20封装。另外py32的DFN8居然比stc8的还便宜,才7毛,,
2024年10月21日更新,我剩的十来片STC单片机,已经全部送给群友了。