之前写的systick_config(loadvalue) 根据系统时钟为72Mhz来写的,如果system clock不是72MHz怎么办?
重新写了一下,先获取,系统时钟频率。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //参数为ms 2 void Systick_Init(u16 ms) 3 { 4 RCC_ClocksTypeDef RCC_Clocks; 5 /* SystTick configuration: an interrupt every 1ms */ 6 RCC_GetClocksFreq(&RCC_Clocks); 7 SysTick_Config(ms*RCC_Clocks.SYSCLK_Frequency / 1000); 8 NVIC_SetPriority (SysTick_IRQn, 1); 9 }
说下关键的RCC_ClocksTypeDef
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 typedef struct 2 { 3 uint32_t SYSCLK_Frequency; /*!< returns SYSCLK clock frequency expressed in Hz */ 4 uint32_t HCLK_Frequency; /*!< returns HCLK clock frequency expressed in Hz */ 5 uint32_t PCLK1_Frequency; /*!< returns PCLK1 clock frequency expressed in Hz */ 6 uint32_t PCLK2_Frequency; /*!< returns PCLK2 clock frequency expressed in Hz */ 7 uint32_t ADCCLK_Frequency; /*!< returns ADCCLK clock frequency expressed in Hz */ 8 }RCC_ClocksTypeDef;