6989|7

173

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

msp430G2553头文件里的一点疑惑:SFR_16BIT(WDTCTL); 中的WDTCTL为何没有定义??? [复制链接]

  1. /* External references resolved by a device-specific linker command file */
  2. #define SFR_8BIT(address)   extern volatile unsigned char address
  3. #define SFR_16BIT(address)  extern volatile unsigned int address
  4. #define SFR_32BIT(address)  extern volatile unsigned long address
复制代码

  1. /************************************************************
  2. * WATCHDOG TIMER
  3. ************************************************************/
  4. #define __MSP430_HAS_WDT__                    /* Definition to show that Module is available */

  5. SFR_16BIT(WDTCTL);                            /* Watchdog Timer Control */
  6. /* The bit names have been prefixed with "WDT" */
  7. #define WDTIS0                 (0x0001)
  8. #define WDTIS1                 (0x0002)
  9. #define WDTSSEL                (0x0004)
  10. #define WDTCNTCL               (0x0008)
  11. #define WDTTMSEL               (0x0010)
  12. #define WDTNMI                 (0x0020)
  13. #define WDTNMIES               (0x0040)
  14. #define WDTHOLD                (0x0080)

  15. #define WDTPW                  (0x5A00)
复制代码
SFR_16BIT(WDTCTL); /* Watchdog Timer Control */这一句中的WDTCTL怎么找不到,SFR_16BIT(WDTCTL);sfr是配置一个寄存器,按照
#define SFR_8BIT(address) extern volatile unsigned char address ,SFR_16BIT(WDTCTL)是把WDTCTL这个地址配置给哪个寄存器?是WDTCTL??
谢谢!

最新回复

  详情 回复 发表于 2016-8-15 20:08
 
点赞 关注

回复
举报

129

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
看手册10.3那节。

点评

看这节干嘛?我百度了一上午,有点头绪了,TI使用C语言中的链接功能,在安装目录下有个文件,给WDTCTL赋值了。[/backcolor] SFR_16BIT(WDTCTL)的意思是不是,定义一个寄存器[/backcolor]WDTCTL[/backcolor],该寄存  详情 回复 发表于 2015-1-4 16:12
 
个人签名游离在码农与网工之间
 

回复

173

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
eeliu 发表于 2015-1-4 16:02
看手册10.3那节。
看这节干嘛?我百度了一上午,有点头绪了,TI使用C语言中的链接功能,在安装目录下有个文件,给WDTCTL赋值了。
SFR_16BIT(WDTCTL)的意思是不是,定义一个寄存器WDTCTL,该寄存器的地址就是在安装目录文件中的WDTCTL的值???
 
 
 

回复

129

帖子

3

TA的资源

一粒金砂(中级)

4
 
本帖最后由 eeliu 于 2015-1-5 08:54 编辑
  1. #define SFR_16BIT(address)  extern volatile unsigned int address
复制代码
  1. SFR_16BIT(WDTCTL);
复制代码

这个是宏替换,把
  1. SFR_16BIT(WDTCL);
复制代码
替换为:
  1. extern volatile unsigned int WDTCTL
复制代码

编译器编译的时候实际编译的是这句:
  1. extern volatile unsigned int WDTCTL
复制代码

“WDTCTL是一个 16 位的,密码保护的,读取/写入寄存器。”WDTCTL只是一个寄存器的名字,而具体值由
  1. #define WDTIS0                 (0x0001)
  2. #define WDTIS1                 (0x0002)
  3. #define WDTSSEL                (0x0004)
  4. #define WDTCNTCL               (0x0008)
  5. #define WDTTMSEL             (0x0010)
  6. #define WDTNMI                 (0x0020)
  7. #define WDTNMIES              (0x0040)
  8. #define WDTHOLD               (0x0080)
  9. #define WDTPW                  (0x5A00)
复制代码

这些提供。
多看看手册和TI的例程、头文件,多结合看几遍就看懂了啊。
以上个人理解,如有不对,请坛友指出纠正,谢谢。

点评

不知道你发现没有,这些宏定义中没有WDTCTL的定义,我查了下说是TI在出厂前把他的定义写进了memory中, 我知道这句是这样进行宏替换,那他是怎么工作的?是把address里面的值赋给address,即把WDTCTL里的值赋给WDTC  详情 回复 发表于 2015-1-5 14:40
 
个人签名游离在码农与网工之间
 
 

回复

173

帖子

1

TA的资源

一粒金砂(中级)

5
 
eeliu 发表于 2015-1-5 08:53
这个是宏替换,把替换为:
编译器编译的时候实际编译的是这句:
“WDTCTL是一个 16 位的,密码保护的,读取/写入寄存器。”WDTCTL只是一个寄存器的名字,而具体值由
这些提供。
多看看手册和TI的例程、头文件,多结合看几遍就看懂了啊。
以上个人理解,如有不对,请坛友指出纠正,谢谢。
不知道你发现没有,这些宏定义中没有WDTCTL的定义,我查了下说是TI在出厂前把他的定义写进了memory中,
  1. #define SFR_16BIT(address)  extern volatile unsigned int address
复制代码
  1. extern volatile unsigned int WDTCTL
复制代码
我知道这句是这样进行宏替换,那他是怎么工作的?是把address里面的值赋给address,即把WDTCTL里的值赋给WDTCTL?
按照以前学的C来说,
  1. int a;
复制代码
这只是声明一个变量,extern volatile unsigned int WDTCTL这个感觉不会只是声明WDTCTL这个变量这么简单(寄存器)



 
 
 

回复

129

帖子

3

TA的资源

一粒金砂(中级)

6
 
本帖最后由 eeliu 于 2015-1-6 13:13 编辑

WDTCTL地址的说明:手册10.3节表10.1。


WDTCTL寄存器的定义:msp430g2553.cmd里面有这句。
这个就是你要的在哪定义。

这个文件可以在CCS例程的Includes里面找到,或者在安装CCS目录的ccsv6\ccs_base\msp430\include里面找到。

WDTCTL不是你说的定义写到memory中。
寄存器是寄存器,寄存器怎么写到Flash?
写到Flash的Information Memory中的是一些校准数据。例如,DCO的校准数据。

至于为什么用SFR定义WDTCTL可以参考手册:
“Some peripheral functions are configured in the SFRs. ”





点评

msp430g2553.cmd为什么不直接放在头文件中呢?DCO的校准数据写到[/backcolor]Information Memory中,当时初始化时钟时这个地方也没弄明白,后来百度,估计我把那两个记混了[/backcolor]  详情 回复 发表于 2015-1-6 13:24
 
个人签名游离在码农与网工之间
 
 

回复

173

帖子

1

TA的资源

一粒金砂(中级)

7
 
eeliu 发表于 2015-1-6 13:07
WDTCTL地址的说明:手册10.3节表10.1。


WDTCTL寄存器的定义:msp430g2553.cmd里面有这句。
这个就是你要的在哪定义。

这个文件可以在CCS例程的Includes里面找到,或者在安装CCS目录的ccsv6\ccs_base\msp430\include里面找到。

WDTCTL不是你说的定义写到memory中。
寄存器是寄存器,寄存器怎么写到Flash?
写到Flash的Information Memory中的是一些校准数据。例如,DCO的校准数据。

至于为什么用SFR定义WDTCTL可以参考手册:
“Some peripheral functions are configured in the SFRs. ”
msp430g2553.cmd为什么不直接放在头文件中呢?DCO的校准数据写到Information Memory中,当时初始化时钟时这个地方也没弄明白,后来百度,估计我把那两个记混了



 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表