打印

MSP430G系列时钟CALBC1_1MHZ问题

[复制链接]
8813|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sioca|  楼主 | 2011-9-16 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟在USERGUIDE的速率图上看到BCSCTL1寄存器的RSEL=7时CPU速率大概是1M,那么我手工把这个RSEL设置成7,用串口波特率验证CPU速率确实是1M左右。
但是官方实例代码中有一行
BCSCTL1 = CALBC1_1MHZ;
(#define CALBC1_1MHZ_          (0x10FFu)  /* BCSCTL1 Calibration Data for 1MHz */)
执行完了也是1M左右,但是这个RSEL(BIT3~BIT0)明显是F而不是7。F应该对应20M左右才对。不知道是怎么搞的。另外BCSCTL寄存器是8BIT的,用0X10FFu赋值算是怎么回事呢?

相关帖子

沙发
sioca|  楼主 | 2011-9-16 20:06 | 只看该作者
BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;

#define CALDCO_1MHZ_          (0x10FEu)  /* DCOCTL  Calibration Data for 1MHz */
READ_ONLY DEFC( CALDCO_1MHZ      , CALDCO_1MHZ_)
#define CALBC1_1MHZ_          (0x10FFu)  /* BCSCTL1 Calibration Data for 1MHz */
READ_ONLY DEFC( CALBC1_1MHZ      , CALBC1_1MHZ_)

BCSCTL1 执行完后等于0x86
DCOCTL  执行完后等于0XBC
这是咋回事呢

使用特权

评论回复
板凳
永远的不知| | 2011-9-17 17:34 | 只看该作者
0X10FFu表示地址;
TI的芯片在出厂时有一个校准好的1MHz时钟值,放在这个地方,
程序中直接调用就ok

使用特权

评论回复
地板
sioca|  楼主 | 2011-9-19 08:59 | 只看该作者
BCSCTL1 =(0x10FFu)
BCSCTL1 = 0xFF
这两个有啥区别呢?是不是16位的赋值编译器就强制认为是FLASH地址了?

使用特权

评论回复
5
long009| | 2011-9-19 09:06 | 只看该作者
来了解下!

使用特权

评论回复
6
yqg80| | 2011-9-19 09:21 | 只看该作者
这个细节,楼主都注意到了,看来学无止境啊

使用特权

评论回复
7
sioca|  楼主 | 2011-9-19 17:17 | 只看该作者
再发一下疑问:
BCSCTL1 =(0x10FFu)
BCSCTL1 = 0xFF
这两个有啥区别呢?是不是16位的赋值编译器就强制认为是FLASH地址了?

大家不要灌水啊。一眼没看就到第二页了

使用特权

评论回复
8
永远的不知| | 2011-9-20 17:13 | 只看该作者
可能和编译环境有关,
在IRA中这样写会被警告。

使用特权

评论回复
9
永远的不知| | 2011-9-20 21:37 | 只看该作者
楼主能给出原始例程资料吗?

使用特权

评论回复
10
century99| | 2012-8-24 16:59 | 只看该作者
#define CALDCO_1MHZ_          (0x10FEu)
0x10FEu  结尾的u是什么意思?

使用特权

评论回复
11
shuwei_yz| | 2012-12-16 16:53 | 只看该作者
在作如下宏定义之前,
#define CALDCO_1MHZ_          (0x10FEu)  /* DCOCTL  Calibration Data for 1MHz */
READ_ONLY DEFC( CALDCO_1MHZ      , CALDCO_1MHZ_)
#define CALBC1_1MHZ_          (0x10FFu)  /* BCSCTL1 Calibration Data for 1MHz */
READ_ONLY DEFC( CALBC1_1MHZ      , CALBC1_1MHZ_)

头文件中有一行字:
/************************************************************
* Calibration Data in Info Mem
************************************************************/
他的意思就是:存储在flash中的校准数据,0x10FFu 这些都是他们的地址

使用特权

评论回复
12
sunlinyi33| | 2013-2-16 14:38 | 只看该作者
century99 发表于 2012-8-24 16:59
#define CALDCO_1MHZ_          (0x10FEu)
0x10FEu  结尾的u是什么意思?

很简单,如果你看看其他芯片的头文件,也会有这个符号的,应该是无符号数的意思,就像unsigned char

这里在数据后面加u,代码数据时无符号数,对于地址,都是无符号数

使用特权

评论回复
13
hawksabre| | 2013-2-16 18:28 | 只看该作者
个人觉得可能是在头文件就已经定义好   这个参数只是表示内存地址而已   使用时   直接调用就可以了   呵呵

使用特权

评论回复
14
rjf_1001| | 2013-3-20 17:34 | 只看该作者
又学了一招,非常感谢

使用特权

评论回复
15
comeon201208| | 2013-3-20 20:36 | 只看该作者
这样的问题的我确实的还没仔细的注意的,我看看下的

使用特权

评论回复
16
hawksabre| | 2013-3-20 20:40 | 只看该作者
呵呵   楼主   问题应该解决了吧   呵呵

使用特权

评论回复
17
danieldx| | 2013-5-5 15:01 | 只看该作者
CALBC1_1MHZ_          (0x10FFu) 是一个地址;
CALBC1_1MHZ是一个8bit的数,TI已经设定该值。

使用特权

评论回复
18
sdzhwmr| | 2014-5-13 14:20 | 只看该作者
#define CALBC1_1MHZ_          (0x10FFu)  /* BCSCTL1 Calibration Data for 1MHz */)
是定义的 CALBC1_1MHZ的地址,注意这儿有个下划线, 这不是赋值,是地址

使用特权

评论回复
19
qq819358001| | 2014-7-23 16:46 | 只看该作者
都是大婶啊

使用特权

评论回复
20
smilingangel| | 2014-7-23 18:58 | 只看该作者
单片机内部的晶振问题的啊,直接调用就可以啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

419

帖子

1

粉丝