用CH582M作為藍牙從設(shè)備時,調(diào)用SYS_GetSysTickCnt()函數(shù)獲取systick計數(shù)器的值用作隨機數(shù),讀到的數(shù)據(jù)總是0,這樣的使用之前在CH573F上是可以正常獲取的,代碼也是直接移植過來的,看到void CH58X_BLEInit(void)函數(shù)已經(jīng)啟動了systick定時器,請問是不是在CH582上systick實際并沒有使用還是什么情況?
如圖嘗試一下:
展開函數(shù)
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)調(diào)用SysTick_Config(SysTick_LOAD_RELOAD_Msk),這里看應(yīng)該是直接返回1,定時器沒有啟動,是不是在藍牙的例程里,systick并沒有使用。
藍牙例程里面在CH58X_BLEInit函數(shù)中使能中斷后立馬又Disable了,所以重新開啟一下就可以了。
注意不要開睡眠,開睡眠主頻停止了。
對對,是啟動了HAL_SLEEP模式