CH582M的Systick定时器使用问题

用CH582M作为蓝牙从设备时,调用SYS_GetSysTickCnt()函数获取systick计数器的值用作随机数,读到的数据总是0,这样的使用之前在CH573F上是可以正常获取的,代码也是直接移植过来的,看到void CH58X_BLEInit(void)函数已经启动了systick定时器,请问是不是在CH582上systick实际并没有使用还是什么情况?

如图尝试一下:

image.png


展开函数

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了,所以重新开启一下就可以了。

注意不要开睡眠,开睡眠主频停止了。

image.png


对对,是启动了HAL_SLEEP模式


只有登录才能回复,可以选择微信账号登录