搜索
bottom↓
回复: 40

【原创】自己动手,用SciTE打造带函数提示的STM32开发环境

[复制链接]

出0入0汤圆

发表于 2009-11-27 14:28:46 | 显示全部楼层 |阅读模式
IAR自带的IDE只有简单的语法高亮,用做开发STM32时经常需要查阅函数库头文件看函数原型,跳来跳去的不是很方便。而eclipse,slickedit之流又太占资源,我手上的两台笔记本两台台式机都只有512M DDR333的内存,机器性能可想而知。又想马儿跑,又想马儿不吃草,那只有自己动手丰衣足食了。

使用SciTE来打造适合自己的低消耗高效率的开发环境。用的是SciTE的静态函数提示功能
编写特定的API文件,就可以开启相应的语法函数提示

SciTE自带的C.API只有标准C的部分函数,要得到STM32固件库的函数提示,就得使用ctags来生成STM32固件库的API。

SciTE下载地址:
http://www.scintilla.org/SciTE.html

ctags下载地址:
http://ctags.sourceforge.net/

使用如下参数生成STM32固件库的API文件,固件库的路径根据你自己的来修改,生成的api文件默认在ctags目录下。
ctags参数:
ctags -f stmlib312.api --c-kinds=+p-cdefglmnstuvx -N  D:\stm32f10x_stdperiph_lib\Libraries\STM32F10x_StdPeriph_Driver\inc\*.h

ctags很快就会跑完,生成的文件会是这个样子

(原文件名:1.JPG)
这样子SciTE还不能正确识别,那么再用SciTE的正则表达式去掉无用的信息

提出所有函数:
搜索\(.*/^[ ]*[_a-z0-9]*[ ]*\)\(.*\)\($/.*\)
替换为\2

(原文件名:2.JPG)

使用正则替换完了以后会是这样

(原文件名:3.JPG)
再删除头6行CTAGS的信息

好了!STM32固件库的API文件完成了!把它放到SciTE的主目录下,再编辑SciTEGlobal.properties,加上下面几行
api.*.cxx=$(SciteDefaultHome)/stmlib312.api
api.*.c=$(SciteDefaultHome)/stmlib312.api
autocompleteword.automatic=1
autocomplete.choose.single=1
autocomplete.ignorecase=1

重新启动SciTE,随便写一个C文件,看看语法提示的效果,输入首字母以后按Ctrl+i

(原文件名:4.JPG)
继续编写看参数提示

(原文件名:5.JPG)

好了,带STM32固件库函数提示的编辑器SciTE已经打造好了,现在把它整合进IAR。
两种方法,一个是直接把SciTE定义为IAR的外接编辑器,IAR--Tools--Option--Editor--Use External Editor

(原文件名:6.JPG)
另一种是作为外部工具来调用,Tools--Configure Tools......
路径写你自己的SciTE的路径,参数写$FILE_PATH$,这样就可以了

(原文件名:7.JPG)
我个人比较倾向于后者,用IAR组织好项目的文件,然后调用外部工具的SciTE来编辑,完了回到IAR里编译调试。

(原文件名:8.JPG)

到这里就配置完成了,以后即使STM32固件库再更新,也只用CTAGS再跑一遍做出新的API文件就行。毕竟是预处理好的静态API,比起eclipse,slickedit的资源消耗少了很多很多。

出0入4汤圆

发表于 2009-11-27 14:32:53 | 显示全部楼层
顶,好东西。

出0入0汤圆

发表于 2009-11-27 14:35:06 | 显示全部楼层
不错,有点麻烦

一直都是用source insight, 它也有类似功能。

出0入31汤圆

发表于 2009-11-27 14:36:14 | 显示全部楼层
不错,好像很好用啊

出0入0汤圆

发表于 2009-11-27 14:48:09 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-11-27 15:58:19 | 显示全部楼层
支持,不过我一直用source insight

另外,问一下,这个我输TIM1->,它能自动把后面的结构体成员列出来么?

出0入0汤圆

发表于 2009-11-27 17:33:59 | 显示全部楼层
用SlickEDIT的飘过~

出0入0汤圆

 楼主| 发表于 2009-11-27 22:39:52 | 显示全部楼层
回5楼:
没办法列结构体的。SciTE的API功能只能做函数的提示。
如果仔细看过我处理出来的API文件,会发现里边只有函数的原型。

用SciTE做函数提示与SI的原理是不一样的,我的做法是用ctags把STM函数库里所有的函数原型提出来放到API文件里,让SciTE读取后提供一个变通的函数提示。而SI是实时地读你的库文件,识别函数/结构体之类的再给你函数提示。一个是静态的,一个是动态的。

相对的,SI的动态提示比较占资源,所以才想了这么个变通的办法。

出0入0汤圆

发表于 2009-11-28 07:58:17 | 显示全部楼层
目前我用过的编辑器,全都不能提示像TIM1->CR1后面的CR1,哪位给推荐一个可以的?

出0入0汤圆

发表于 2009-11-28 11:02:30 | 显示全部楼层
类似的软件我也找了好久,绕了一大圈,还是回到是Source Insight

暂时没有发现哪个软件能真正超越Source Insight的

Source Insight最大的缺点是对双字节字符支持不好,中文注释有问题

其他的都是一些小Bug

出0入0汤圆

发表于 2009-11-28 12:22:31 | 显示全部楼层
为什么大家不去试试vim?我想用ctags加vim应该也能实现这功能。

出0入0汤圆

发表于 2009-11-30 00:14:50 | 显示全部楼层
用slickedit吧,对中文支持也相当好,语法一次性排版,自动查找都相当出色,si有的功能他都有,而se有的si是没有的哦。唯一一点就是程序有点大,占用资源也相对较多。

出0入0汤圆

发表于 2009-11-30 08:09:46 | 显示全部楼层
slickedit同样不能实现我在【5楼】的需求。

出0入0汤圆

发表于 2009-11-30 08:24:45 | 显示全部楼层
SciTE确实是轻量很好用的编辑器。之前一直都用来编辑AU3,没想到还可以这样用,学习了...

出0入0汤圆

发表于 2009-11-30 23:02:50 | 显示全部楼层
请问楼主,MDK中可以实现吗?

出0入0汤圆

发表于 2009-12-1 00:32:27 | 显示全部楼层
【5楼】 lollipop

code::blcoks可以实现你的要求。当然,要用NIGHTLY BUILD版(在官方论坛发布的),8.02很久没用不清楚能否实现。

另外CB可以配合很多种编译器使用。目前在X86、AVR、ARM三种平台下我都把它作为代码编写、编译的主环境。

出0入0汤圆

发表于 2010-8-17 14:06:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-17 14:50:13 | 显示全部楼层
不如用VC来得方便

出0入0汤圆

发表于 2010-8-17 14:52:45 | 显示全部楼层
用VC+VX吧

出0入0汤圆

发表于 2010-8-18 10:57:30 | 显示全部楼层
好用哦,多谢介绍

出0入0汤圆

发表于 2010-8-18 13:47:39 | 显示全部楼层
我正在找这样的东西。
如果用VC+VX的方法,那对文件的结构怎么控制? 在VC中写好以后放到keil中来打开?

还有,SciTE 有没有使用的教程啊。 刚开始学STM32 什么都是从0开始
希望大家不吝赐教 多谢啦
头像被屏蔽

出0入0汤圆

发表于 2010-8-19 09:56:56 | 显示全部楼层
楼主顺带也把那两个软件怎么用也说说吧,我在你指定的地方下下来了那两个软件但是里面都是MS-dos文件,连你贴上去的界面都进不了。

出0入0汤圆

发表于 2010-8-19 14:00:05 | 显示全部楼层
KEIL MDK可以吗

出0入0汤圆

发表于 2010-11-12 20:26:40 | 显示全部楼层
最好拷贝到根目录下,目录没有中文名字,才能正常运行。

出0入0汤圆

发表于 2010-11-12 22:17:32 | 显示全部楼层
好东西,以前怎么没看到呢?一直想找一个在Linux下也能玩的,这个在Linux下应该怎么配置呢

出0入0汤圆

发表于 2010-11-19 06:02:33 | 显示全部楼层
哇~!很好
学习学习

出0入0汤圆

发表于 2010-11-19 13:16:56 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2010-11-19 16:47:26 | 显示全部楼层
多谢分享经验

出0入0汤圆

发表于 2010-11-19 17:01:38 | 显示全部楼层
Slick Edit 中双击选中功能反映比较慢

出0入0汤圆

发表于 2010-11-20 10:40:00 | 显示全部楼层
多谢分享经验

出0入134汤圆

发表于 2010-11-20 11:24:23 | 显示全部楼层
用VS+VAX的飘过

出0入0汤圆

发表于 2010-11-20 20:00:43 | 显示全部楼层
回复【12楼】lollipop 天堂里没有猪头猪脑
slickedit同样不能实现我在【5楼】的需求。
-----------------------------------------------------------------------

另外,问一下,这个我输TIM1->,它能自动把后面的结构体成员列出来么?
-------------------------
【5楼】的需求是上面这个吗?如是的话slickedit可以满足你,source insight与slickedit比较起来还是轻量级的

出0入211汤圆

发表于 2010-11-21 08:19:44 | 显示全部楼层
MARK一下

出0入0汤圆

发表于 2011-1-11 12:07:23 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-1-11 12:38:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-11 14:16:01 | 显示全部楼层
回5楼  eclipse 可以实现-> 这个功能  我一直都在用

出0入0汤圆

发表于 2011-8-31 22:53:58 | 显示全部楼层
还不如做成图形编程界面,不会代码的都能操作,我有这样的单片机图形IDE系统源代码,基于AVR的,只是代码量太大了维护都不好搞.如果有空搞,同时也可以把简单的PLC一起吃掉的.

出0入0汤圆

发表于 2011-9-12 22:50:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-13 17:17:00 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2011-9-13 20:10:24 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-3-30 22:27:42 | 显示全部楼层
多谢分享。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 10:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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