jeecg-boot自动生成代码_关于STM32代码自动生成的工具的进度....

前情提要:STM32代码自动生成工具_本想...但是...可是...所以

首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香;有的很激动,期待我快点出东西;还有的很淡定,知道我在挖坑,填坑遥遥无绝期;还有的,希望我把当前这个工具分享出来………..

兄弟,作者都已经说了不要分享,你这样合适吗?

退一步,我是怎么得来这个工具的?网上搜的,你要是真想要……..

还要感谢一位网友,他分享给我一个C#的反编译工具,直接把那个软件反编译成了源码。

这种反编译出来的源码和作者手写的,在实现方法上应该不一样。打个比方,源码里我用for循环输出10个字符串,反编译出来的代码,估计就是老老实实输出10个字符串。

然后聊聊我手上现有的几款代码自动生成工具(是的,我不止有一个),当然,CUBE就不聊了,咱目前没这能力。

我最开始接触到代码自动生成,是网上的一些小工具,有51的,有AVR的。但51的我只在入门阶段使用,AVR的我已经很久不用了,所以印象一般。

第一次印象比较深的时候,是使用PIC单片机(就是收购ATMEL的那个土豪),他们家的编译器有一个小插件叫:MCC,输入一些配置,就能自动生成大部分初始化所需的代码。很好用,当时在工作中帮我省了很多时间。

1f7b61670ca6fa941d774c97da92d889.png

再后来,接触ST系列,有8有32。8分为几个系列,有S(增强型)系列,有L(低功耗型)系列,有A(汽车级)系列,如果有遗漏欢迎补充。

我用S和L多一些,但每次配寄存器都是一个漫长的工程,拿着手册翻阿翻。忽然有一天,我想,有没有省力一些的方法,然后开始有目的的上网。找到了两个,一个已经分享过了,我放两个图:

5997c1f0d76ef9299377211ef746ab90.png

ab39c598842b394f1dbef53194dde3cb.png

他针对的是S系列,当时提过,这是一个大三的学生写的工具。功能上虽然有小bug,但已经能替代大部分手工了(想想我大三的时候在干嘛)。

如果有懂软件的,应该能想想到这个工作量有多大。把每个函数翻译成中文还好,麻烦的地方在于,要给每个函数设计一个右边用来配置的界面,注意,是每一个!即便可以针对功能类似的函数进行分类,使用同一个页面,但是每个参数的功能描述就足够把人累傻。

这是个力气活!

然后是另一个,作者的意思是这软件只针对8的L系列,如下:

5b33a5bedc8d08147e6364c82be27ec7.png

它在使用前需要导入完整的库文件。导入后如下:

fdb24f954cfa7105ad67e9c2d60d2317.png

d770d7e89e96e18535a5def1b7813949.png

相比第一个软件,它使用了一种很巧妙的方式。注意看这两个图参数的摆放位置,懂的人,从它提示要导入库文件应该就懂了。

是的,它把库文件做了一下整理,判断出哪部分是函数名,哪部分是参数。函数直接在上面显示,然后把参数按顺序添加到combox里。

我推测,ADC1那个参数下面应该还有一列combox,只是属性设置了不可见。当有参数添加到combox里时,属性设置为可见。

我试着导入S系列和32的库,出现部分报错的情况~~~

第三个就是那天你们见到的那个。说实话,这三个风格差不多,实现方式也都差不太多。个人推测第一种和第三种费力一些,第二种省事一些。

另外就是STM8的库和32的库,在功能实现上,有一些设计上的差别。例如8,初始化GPIO,一行代码就够了:

GPIO_Init(GPIOA, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);

但是32,需要先定义一个GPIO的结构体,对结构体的参数做配置,然后再通过初始化函数导入结构体里配置的值:

GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//最高输出速率10MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化外设GPIOx寄存器

这就导致,不能用第二个工具的方法直接整理库函数,还要多做一些工作。否则,我直接给你生成一行:

GPIO_Init(GPIOA, &GPIO_InitStructure);

你会一脸懵逼,然后来骂我~~~

cca347623b5a87d56248e21e4f09d5ea.png

然后说我的思路,懂我的人都知道,我懒……..

还是想以第二个工具的思路为主,但是针对GPIO初始化、TIMER初始化等功能还是要做一些功能上的增加,否则这个工具就没什么意义了。

所以工作分两部分,一部分是对标准外设库进行整理;另一部分是添加初始化相关的代码进行配合。

第一部分应该比较省事,第二部分就是个力气活了~~~

最后是进度………….

076f80ccced423b09ba6c127636afe70.png

没事了,散了吧~~~

不对,还有个事,谁帮我想个霸气的名字?

9c5c0e96285f8d0298c751737ab2906f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.25.05相对上一版本,增加内存数据按数据类型解析功能;V1.25.04相对上一版本,完善X86反汇编,修复小BUG;V1.25.02相对上一版本,COREDUMP统计、匹配目标文件等相关功能优化,修复小BUG;V1.25.00相对上一版本,相关功能支持动态库文件,查询代码支持无符号目标文件+有符号目标文件,COREDUMP统计、与问题单关联、目标文件/CORE文件/问题单同步;V1.24.02相对上一版本,针对进程主动捕捉异常的信息定制处理进一步完善COREDUMP文件解析与应用,增强软件管理;V1.24.01相对上一版本,进一步完善COREDUMP文件解析与应用,提供部分ARM Thumb指令反汇编;V1.24.00相对上一版本,进一步完善COREDUMP文件解析与应用,提供堆栈调用关系分析;V1.23.03相对上一版本,提供32位X86反汇编;V1.23.02相对上一版本,提供源代码行查询指令地址,OBJ/COREDUMP文件解析,sprintf函数参数特定检查,完善文件拖放操作,修复小BUG;V1.23.01相对上一版本,提供ELF文件指令修改,修复ARM MLS指令反汇编错误等BUG;V1.23.00相对上一版本,提供程序地址对应源代码行查询,修复MIPS调试信息错误;V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关软件使用过程中的问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值