用CH582M作为蓝牙从设备时,调用SYS_GetSysTickCnt()函数获取systick计数器的值用作随机数,读到的数据总是0,这样的使用之前在CH573F上是可以正常获取的,代码也是直接移植过来的,看到void CH58X_BLEInit(void)函数已经启动了systick定时器,请问是不是在CH582上systick实际并没有使用还是什么情况?
如图尝试一下:
展开函数
RV_STATIC_INLINE uint32_t SysTick_Config(uint64_t ticks)
{
if((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
return (1); /* Reload value impossible */
SysTick->CMP = ticks - 1; /* set reload register */
PFIC_EnableIRQ(SysTick_IRQn);
SysTick->CTLR = SysTick_CTLR_INIT |
SysTick_CTLR_STRE |
SysTick_CTLR_STCLK |
SysTick_CTLR_STIE |
SysTick_CTLR_STE; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
在void CH58X_BLEInit(void)调用SysTick_Config(SysTick_LOAD_RELOAD_Msk),这里看应该是直接返回1,定时器没有启动,是不是在蓝牙的例程里,systick并没有使用。
蓝牙例程里面在CH58X_BLEInit函数中使能中断后立马又Disable了,所以重新开启一下就可以了。
注意不要开睡眠,开睡眠主频停止了。
对对,是启动了HAL_SLEEP模式