[CC2530] 请问CC254x的SLEEPSTA寄存器的设置问题

[复制链接]
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部

12

主题

46

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部