关于STC函数库的建议
我下面提出的问题会有些举例,并不是说问题只是我举的例子,这些例子只是有代表性的一些。
1是要做版本管理,我拿stc8h的库举例,现在还是20220509的版本,但是问题却很多,功能也不全,最大的问题就是版本有问题!比如stc8的库,如图:库函数文件夹和独立例程文件夹的版本是不同的,这会为开发带来误解。而且这两个版本的库内容也是不同的!比如独立库就没有宏定义配置IO的方式!!!!!而综合例程的库就有。我认为结构体配置io在51上大可不必,虽然可以有,但是必须有简洁的函数化配置方式。
版本管理怎么做?建议STC使用github、gitee,整版本管理,而不是官网一个压缩包,(压缩包依然可以保留但是一定要搞版本管理),允许用户贡献代码(可以不),提issue,而不是只能找技术,销售或者在论坛在群里问。这样才能让开发者开发起来更容易。
2.库的管理要做好,建议大量增加ifdef等语句,帮用户做好很多工作(不重复造轮子),比如让用户define自己的芯片型号,由ifdef来判断使用STC8G的库还是STC8H的库,让用户define芯片版本,固件版本,if判断该芯片版本是否有这个功能,是否存在问题,在编译时就报错,防止用户因为版本不同在量产时出问题
3.将timer interrupt等需要配置的函数、定义从库文件中拿出来,让用户非必要不改库,减少问题出现
4.记得stc以前推出过cubx,但似乎已经没了,stc自己也是有考虑的吧!!我认为还是可以有,直接省去用户下载库配置工程的时间。有人认为51就应该用寄存器开发,前期有人认为stm32也应该用寄存器,这样才更根本,但如今stm32的库开发已经相当方便。是我认为,stc现在的51,性能已经比较强悍,不应该把工程师的时间浪费在查寄存器上,应大力推广库开发,提高竞争力。毕竟以更短的时间落地产品,何乐而不为?
5.官方的库一定要全,比如chipID的功能,库就没有,例程也太少,远少于试验箱的例程。
5.库显然还很多有问题,比如,在程序开始的时候先将P_SW2第一位写1(P_SW2 |= 0x80;//使能访问XFR)不知道初始化啥外设的时候,P_SW2寄存器第一位(XFR)会重新变成0,而无法访问CHIPID;
听别人说还有别的问题但是记不起来了。官方也要积极更新库,以后stc出ARM核的,用寄存器开发就太累了,所以建议尽早落实库的版本管理等。
我们会逐渐完善库函数的。您所提的要求,我们会逐步推进。
实际上,好多用户都没用过ARM,所以用库就显吃力。
STC最早于2013年提供STC15系列的库函数,风格和STM32的风格一致。
后来好多用户说寄存器来的更直接高效。
我完善了一下关于io中断还有外部中断的库上传到论坛,结果都没人吱声:sleepy: 感谢,持续改善,持续进步,一箭双雕之USB转双串口,6M bps 请笑纳 chen 发表于 2022-12-16 11:07
我完善了一下关于io中断还有外部中断的库上传到论坛,结果都没人吱声 ...
因为51真没几个用库的~ 电子DIY小家 发表于 2022-12-16 13:17
因为51真没几个用库的~
之前我都是自己封装常用外设的初始化代码,官方没有好用的库当然没几个用:lol 我用官方库整理了一套自己的框架,感觉越来越喜欢了,就是后期发现官方库实在有些地方不好:
其中一个CPU的头文件里包含了好多额外的定义,而且不同的官方例程头文件居然不通用,害得我重新改来改去;
再一个官方的库函数版本的例程也不统一,比如有的中断函数拿出来了,有的却在驱动库里,有的驱动库结构体定义居然还不同,比如有的库函数中中断使能及优先级是结构体的成员,有的居然有采用的是中断设置函数
官方不重视库函数的维护也会影响到很多人的使用的,但也别指望刚推出就有大批人去支持和使用
STM32用的人多,库函数丰富完善好用也是一个重要原因(降低了开发使用门槛) 之前官网里面那个逐飞科技做的库那个风格挺不错的,外设初始化一个函数搞定
chen 发表于 2022-12-16 11:07
我完善了一下关于io中断还有外部中断的库上传到论坛,结果都没人吱声 ...
悦己达人,进德修业~