主题中讨论的其它部件:、 SMARTRF06EBK、 SIMPLELINK-2-4GHz-设计评审、
您好!
我的客户正在开发使用 CC2538的产品。
CC2538定制板
CC2538-SW 1.0.1.0
在极少数情况下、CC2538不会从"电源模式2"唤醒。
它们会获得睡眠定时器的值、并在大约20ms 后将该值存储在比较寄存器中。 CC2538通常会被唤醒、但很少会被唤醒。
下面显示了由客户创建的示例代码。 (msec 为16~24ms。)
ApiResult_t ApiSleep (uint16_t msec) { uint32_t ui32Val; uint32_t ui32Diff; ui32Diff =(uint32_t) msec; ui32Diff =(ui32RT * 32768INT)/ 1000UL;//msec ->禁用 TART/ 中断 / UARTDIT_UARTRT/中断 //禁用 UART TX 中断 //在进入深度睡眠 时让系统进入电源模式2 SysCtrlPowerModeSet (SYS_CTRL_PM_2); //启用睡眠计时器唤醒 GPIOIntWakeupEnable (GPIO_IWE_SM_TIMER); //启用睡眠模式中断 IntEnable (INT_SMTIM); //将计时器设置为 uDiff (GPIOVal );TimerDiff (32uDiff)值+ TimerSleep (TimerDiff); //将 TimerDiff (TimerDiff)值设置为高于32uDiff (32uDiff) //启用其他中断 SysTickIntEnable();//启用 SysTick 计时器中断 UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT);//启用 UART RX 中断 … }
上述代码符合用户指南13.2定时器比较的限制。
「当设置一个新的比较值时、该值必须至少比当前睡眠定时器值多5个。 否则、定时器比较事件可能会丢失。」
奇怪的是、在20毫秒内未唤醒的器件在睡眠定时器发生时被确认唤醒。 (大约36.4小时后、32kHz、32位寄存器)
当睡眠定时器和比较值匹配时、器件可能在第二个时序被唤醒。
这导致我们相信、睡眠定时器很少错过比较事件。
问题1:
如果您知道原因和要做什么、请告诉我。
问题2:
我认为、当写入大于32位的值时(溢出)、定时器从0x0000 0000重新开始计数。 是这样吗?
(示例)如果比较值= 5+睡眠定时器
睡眠定时器比较
0x0000 0000 0x0000 0005
0xFFFF FFFA 0xFFFF FFFF
0xFFFF FFFB 0x0000 0000
0xFFFF FFFC 0x0000 0001
此致、
请