OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15747|回复: 20

学了几天STM32,实在忍不住,要对keir大吐槽。

[复制链接]

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2012-7-2
在线时间
10 小时
发表于 2012-8-1 11:01:33 | 显示全部楼层 |阅读模式
以前用PIC的,初次接触keir MDK,太不习惯了,以下几点不爽,当然也可能是我没设置好,望大家赐教。

1:没有智能括号,自动缩进功能,在MPLAB IDE里面只要选项勾上,可以做到打上括号,自动添加右括号,而且光标在括号中间,在左边大括号后面敲回车键,可以直接缩进,而在“keir”里面,一定要多按TAB键。
2:函数末尾大括号后面要回车一行,刚开始老是忘记,编译总是警告。
3:不支持书写二进制,这在配置寄存器的时候很不方便,比如我要把9:7位配置为 “110”,在MPLAB IDE里面可以写为0b110,而keil我试了发现不行,只能10进制或者16进制。以前用PIC的MPLAB IDE,那种简单就写那种,反正二进制,八进制,十进制,十六进制都支持。
4:仿真寄存器变量窗口麻烦,似乎只能手动输入,还得先按下F2,而MPLAB IDE里面,可以直接选择。还有keil变量只能十进制,十六进制二选一,而MPLAB IDE里面可以把“地址,寄存器名,二进制值,十进制值,十六进制值”同时显示。
5:"->" 简直是脑残设计,输入这个符号极不方便,而MPLAB IDE 可以这样写,“Buttons.ButtonBit.BTN10=1”,直接指到位,而且输入“.”比输入"->" 方便多了。
6:不能直接操作位,以前用PIC比如启动AD转换,直接“ADGO=1;while(ADGO)”,多简单,我还不明白为什么STM32全部要位移,到底是编译器的原因,还是单片机的原因。
7:没发现跑表功能,就是执行一条语句或者一个函数,断点用了多长时间,这个按道理应该有吧,可能我没发现。
……

欢迎大家拍砖,并指教,这几天感觉太蹩脚了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-1 11:28:10 | 显示全部楼层
回复【楼主位】jingyu168:
---------------------------------
1~3,这个不知道4.X有没有改进,如果没有楼主可以发邮件给MDK,吐槽一下.
4,这个好像4.X改进了.
5,这个->是标准符号来的...你不能说C语言的设计者是个脑残吧? ->是指针用的,.是非指针的时候用的.
6,直接位操作貌似只有你的PIC支持吧...
7,在软件仿真的时候有的,在右下角.

建议:用PIC算了,一条路走到黑.免得别的垃圾编译器带来不爽.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-1
在线时间
3 小时
发表于 2012-8-1 11:33:02 | 显示全部楼层
楼主。。
关于你的3,4,5这三个问题是因为arm的操作内存是32位的,pic是8位的,arm在写一些算法的时候比较简单。
至于6,7在外设上stm32也会在使用手册上把例程写好,复制黏贴就能用了 比如AD ,PWM
我觉得学arm是大势所趋

一起奋斗
回复 支持 反对

使用道具 举报

12

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-7-22
在线时间
0 小时
发表于 2012-8-1 11:48:14 | 显示全部楼层
觉得还好,因为是由51歇过来的,
回复 支持 反对

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2012-7-2
在线时间
10 小时
 楼主| 发表于 2012-8-1 11:59:51 | 显示全部楼层
回复【3楼】valmon:
---------------------------------
回复【2楼】正点原子:
---------------------------------

我没有说STM32不好,我说的是编译器,你们不能理解那种以前很顺手的功能在新的编译器里面突然不能用的感受。
“->”是指针用的,那些寄存器不是定义的结构体吗?如果是结构体,用点也是可以的吧?
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-8-1 13:47:41 | 显示全部楼层
mdk在功能上确实输给ml很多,但是MDK的主要定位是MCU用的开发环境,ML也是可以用来生成STM32的代码的,楼主有兴趣可以上网去搜一搜

另外从楼主吐槽的内容来看,暴露出楼主对C语言和硬件非常不熟悉,
比如第3点,完全是可以自己做的,你可以上网搜索C语言书写二机制,我现在也在用着自己做的二进制书写工具。
第5点,C语言的结构体也是使用 . 操作符的,只有指针的成员才是用 ->。你想用 . 当然也可以,我也有进行过自己的封装,这还是个基础的C语言问题,不想解释。
第6点,楼主根本不了解CM3,CM3是有位带区的,完全可以支持位操作,而且所有的外设寄存器的每一位都可以支持微操作,这一点完全不是那些传统的8位机可以匹敌的。

ML固然有它的优势,但是位什么开发ARM的大部分还是用MDK或者IAR作为开发环境呢?
https://github.com/roxma
回复 支持 反对

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2012-7-2
在线时间
10 小时
 楼主| 发表于 2012-8-1 14:17:17 | 显示全部楼层
IAR的界面和MPLAB IDE有点像,什么时候下来试试。
回复 支持 反对

使用道具 举报

48

主题

376

帖子

0

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2011-3-18
在线时间
7 小时
发表于 2012-8-1 14:29:28 | 显示全部楼层
我從來只責自己弱
回复 支持 反对

使用道具 举报

27

主题

308

帖子

1

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2012-6-19
在线时间
19 小时
发表于 2012-8-1 14:37:55 | 显示全部楼层
第四个仿真窗口可以把变量拖动到窗口里面,连F2都不用额
回复 支持 反对

使用道具 举报

9

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-9-8
在线时间
16 小时
发表于 2012-8-1 14:50:03 | 显示全部楼层
回复【楼主位】jingyu168:
---------------------------------
什么是吐槽? 什么是keir?
回复 支持 反对

使用道具 举报

9

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2012-3-19
在线时间
37 小时
发表于 2012-8-1 15:39:27 | 显示全部楼层
还好自从接触AVR开始就一直用IAR
回复 支持 反对

使用道具 举报

5

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2012-7-28
在线时间
6 小时
发表于 2012-8-1 20:58:58 | 显示全部楼层
从51过来的,还是keil还是亲切
回复 支持 反对

使用道具 举报

6

主题

68

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2011-12-17
在线时间
4 小时
发表于 2012-8-1 21:29:25 | 显示全部楼层
只是一个工具而已!楼主还是别吐了!刀枪棍棒,随你的喜好
与其相濡以沫,不如相望江湖!
回复 支持 反对

使用道具 举报

5

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2010-12-16
在线时间
28 小时
发表于 2012-8-1 22:11:13 | 显示全部楼层
萝卜白菜,各有所爱!
习惯问题!!!
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2011-8-23
在线时间
0 小时
发表于 2012-8-1 23:18:48 | 显示全部楼层
建议使用eclipse,装个插件就可以开发STM32
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-8-2 00:30:53 | 显示全部楼层
eclipse 的编辑器是比较好用点,但是现在好像还不支持用MDK编译
啥时候能搞个无缝链接就好了
https://github.com/roxma
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-1
在线时间
3 小时
发表于 2012-8-2 15:28:37 | 显示全部楼层
回复【楼主位】jingyu168:
---------------------------------
你好楼主 关于->这个符号的问题 是因为你是直接对寄存器做操作,如果你是用库函数的话就不会有这样的问题,在driverlib里面
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2012-6-21
在线时间
5 小时
发表于 2012-8-2 15:56:52 | 显示全部楼层
我也一路·从PIC的16系列的汇编语言·到c语言,再到51,M0,M3, 感觉keil与MPLAB主要有两点差异
1.  keil不支持变量的二进制查看,这个在查看外设寄存器有许多不方便,MPLAB就方便多了
2.  位操作的问题,这个由单片机的架构决定,PIC位操作确实是最好的,而且代码量最少,这也是PIC取的成功的关键,
3.  我从PIC跳到M3,并不是跟时髦,主要是当时小批量应用时,受到PIC的价格因素与ROM,RAM 容量偏小,在应用TFT时,有许多不方便
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-8-2 17:19:52 | 显示全部楼层
回复【18楼】xpdzsj:
---------------------------------
位操作在8051里面也有,可见位操作并不应该视为PIC的关键,PIC的位操作代码量比CM3的位带操作少多少?这个问题我不大理解,楼上能否解释一下?

PIC比51的优势在于抗干扰(道听途说,我没测试过),但是PIC的价格是个要命的问题,所以我没有见过周围有人玩PIC。
https://github.com/roxma
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2012-6-21
在线时间
5 小时
发表于 2012-8-3 06:27:37 | 显示全部楼层
1.  51的寄存器和RAM,能全部位操作???
2.  PIC的位操作和位检测只要1条指令,PIC当时就是靠这个发迹的,

     例如 IC16系列的指令
             BSF    XXX,  y ;   (BSF为给某位置1 指令 , XXX代表任意可读写的寄存器或RAM , y 代表任意位0~7) 
             BTFSS   XXX,y;   (BTFSS为检测某位是否置1 指令 , XXX代表任意可读写的寄存器或RAM , y 代表任意位0~7) 
           上面1条指令占1个字节ROM空间,

    而51要给不可位操作的寄存器和RAM ,位操作,这个我不多说了,
    用单片机,首先要清楚单片机的架构,这个前提条件不清楚,是玩不好单片机的。
    现在台系仿PIC的在小家电上 遍地开花,你就清楚它的某些特点了,当然我只是PIC的使用者,使用有10+年,具体的项目还是考虑单片机的性价比。          
                                                    
           
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2012-8-3 09:45:06 | 显示全部楼层
 MPLAB 也有不如意的地方 ,比如 就没有 Go to Define 之类的 
虽然也有个Goto ,但是 一般都不起作用,指不到变量的位置

还有就是 工程管理太混乱,.c .h 没有直接关系,如果文件多,就得自己去找
我试过,用 MPLAB ,一个文件夹复制过去,但是它的 include 配置路径还是原来的,
导致出了很多问题

4 仿真查看 是Keil的弱项, 好多变量看不到 有时候恨的要死
5 ->是C标准, pic的也同样支持,是指针形式,而 .是类形式的 这个没有区别

6 STM32 支持位域操作,但需要映射到位域,PIC 是8位机,都支持bit操作,
  用<< >> 也是C 标准,而且效率高

7 有啊, 在下面工具栏内,不过不太直观,需要每次清除
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 03:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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