搜索
bottom↓
回复: 10

430学习的一个疑惑

[复制链接]

出0入0汤圆

发表于 2013-7-25 08:47:02 | 显示全部楼层 |阅读模式
现在已经大概明白如何对430进行编程,但有一点很疑惑,就是如何快速进行coding的问题。
例如#include"msp430g2553.h" 有以下内容。
#define DIVS0               (0x02)   /* SMCLK Divider 0 */
#define DIVS1               (0x04)   /* SMCLK Divider 1 */
#define SELS                (0x08)   /* SMCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
#define DIVM0               (0x10)   /* MCLK Divider 0 */
#define DIVM1               (0x20)   /* MCLK Divider 1 */
#define SELM0               (0x40)   /* MCLK Source Select 0 */
#define SELM1               (0x80)   /* MCLK Source Select 1 */

#define DIVS_0              (0x00)   /* SMCLK Divider 0: /1 */
#define DIVS_1              (0x02)   /* SMCLK Divider 1: /2 */
#define DIVS_2              (0x04)   /* SMCLK Divider 2: /4 */
#define DIVS_3              (0x06)   /* SMCLK Divider 3: /8 */

可以看得出编译器已经定义好了一些快捷宏定义,所以不必将每一位计算出来然后赋值给寄存器。
可问题就是这里,这些宏定义意义不是很明确。

例如:我想将LFXT1设置为MCLK
#define SELM0               (0x40)   /* MCLK Source Select 0 */
#define SELM1               (0x80)   /* MCLK Source Select 1 */

手册的资料
SELMx:  MCLK频率选择
00   DCOCLK
01   DCOCLK
10    XT2如果出现在片上则是XT2CLK,当XT2不出现在片上则选择
        LFXT1CLK或VLOCLK
11    LFXT1CLK或VLOCLK

也就是说 我要这样赋值BCSCTL2 |= SELM1 + SELM0;

可是我找了半天也没找到关于这些宏定义的总结,难道开发的时候还要先翻数据手册查到相应位,然后在打开msp430g2553.h查看其快捷宏定义,然后才coding出BCSCTL2 |= SELM1 + SELM0? 那msp430g2553.h对于初学者来说不是属于鸡肋了么?

我表达能力有限,其实说那么多,也就是想问问大家平时是如何写430程序的。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-7-25 08:50:13 | 显示全部楼层
还有一些什么__delay_cycles(100000);啊 __bis_SR_register(CPUOFF);啊  数据手册上肯本就没有。。。。

出0入0汤圆

发表于 2013-7-25 09:43:13 | 显示全部楼层
看对应芯片的  *.h  文件,基本都在这里面呢

出0入0汤圆

 楼主| 发表于 2013-7-25 09:47:37 | 显示全部楼层
yongjia 发表于 2013-7-25 09:43
看对应芯片的  *.h  文件,基本都在这里面呢

但是里面都是宏定义,我根本不知道这些宏定义应该赋值给那个寄存器

出0入0汤圆

发表于 2013-7-25 10:00:13 | 显示全部楼层
初学者还是老老实实看手册吧,头文件并不能帮助你多少。

出0入0汤圆

发表于 2013-7-25 10:29:11 | 显示全部楼层
万能青年 发表于 2013-7-25 09:47
但是里面都是宏定义,我根本不知道这些宏定义应该赋值给那个寄存器

宏定义 前头一般有寄存器的说明的,你对应着手册查找就行了,这些宏定义就方便你使用的,当然你完全可以不用宏定义,一样的可以读写控制430的寄存器

出0入17汤圆

发表于 2013-7-25 10:44:43 | 显示全部楼层
上帝的归上帝,凯撒的归凯撒;
430硬件手册里讲硬件寄存器;编程指南里讲C语法;CCS的手册里讲编译器和一些特殊语法。

出0入0汤圆

发表于 2013-7-25 14:11:33 | 显示全部楼层
使用CCS里边带的Grace图形编程    就可以方便很多了。

LZ用的是IAR还是CCS?

出0入0汤圆

 楼主| 发表于 2013-7-25 14:49:22 | 显示全部楼层
祥子 发表于 2013-7-25 14:11
使用CCS里边带的Grace图形编程    就可以方便很多了。

LZ用的是IAR还是CCS?

IAR。。。。。

出0入0汤圆

 楼主| 发表于 2013-7-25 14:50:00 | 显示全部楼层
经过一天的探究,我明白了,现在要做的就是学!!!谢谢大家!!

出0入54汤圆

发表于 2013-7-25 15:27:10 | 显示全部楼层
BCSCTL2 |= SELM1 + SELM0;
这样的少用啊,不知道你想表达的真实意思。
这样比较好一点
BCSCTL2 |= (SELM1 + SELM0);
或者你的意思是??
BCSCTL2 = (BCSCTL2 | SELM1) + SELM0;

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

本版积分规则

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

GMT+8, 2024-7-23 09:30

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

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