打印
[CC2530]

请问CC254x的SLEEPSTA寄存器的设置问题

[复制链接]
4939|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengkewei|  楼主 | 2020-12-5 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CC254x的SLEEPSTA在手册上标示的位定义如下:
7     OSC32K_CALDIS    0    R
6:5   –                         00  R
4:3  RST[1:0]               XX  R
2:1   –                         00  R
0    CLK32K                  0    R
TI的BLE协议栈1.4中的SimpleBLEPeripheral开头的初始化代码中执行
HAL_BOARD_INIT();
展开后的代码如下:
  /* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */                      \
  START_HSOSC_XOSC();                                                          \
  SET_OSC_TO_HSOSC();                                                          \
  SET_32KHZ_OSC();                                                             \
  SET_OSC_TO_XOSC();                                                           \
  STOP_HSOSC();                                                                \
                                                                               \
  /* Enable cache prefetch mode. */                                            \
  PREFETCH_ENABLE();
其中大部分都用到SLEEPSTA寄存器,如:
#define START_HSOSC_XOSC()                                                     \
{                                                                              \
  SLEEPCMD &= ~OSC_PD;                    \
  while (!(SLEEPSTA & XOSC_STB));            \
}
而宏 XOSC_STB在halmcu.h当中定义如下:
/* SLEEPSTA bit definitions */
#define XOSC_STB   BV(6)  /* XOSC: powered, stable=1 */
#define HFRC_STB   BV(5)  /* HFRCOSC: powered, stable=1 */
TI的源码是说bit6是XOSC的稳定标示位.但是手册中却说bit6是保护位(标示Reserved)
不可写,只读.
(我也注意到另外一个寄存器CLKCONSTA,它的bit指示当前使用的时钟源.)

最大的奇怪是,代码编译后,功能正常.
望高手指点一二.
多谢.

使用特权

评论回复

相关帖子

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

本版积分规则

12

主题

46

帖子

1

粉丝