最近毕业设计需要做了一个stm32最小系统板,上电后发现延时函数不对劲,1s的led延时大概等了10s左右,初步判断晶振电路出了问题。
获取当前时钟频率方法(库函数)
定义一个全局变量:
RCC_ClocksTypeDef get_rcc_clock; //获取系统时钟状态
RCC_ClocksTypeDef是一个结构体
定义如下
typedef struct
{
uint32_t SYSCLK_Frequency; /*!< returns SYSCLK clock frequency expressed in Hz */
uint32_t HCLK_Frequency; /*!< returns HCLK clock frequency expressed in Hz */
uint32_t PCLK1_Frequency; /*!< returns PCLK1 clock frequency expressed in Hz */
uint32_t PCLK2_Frequency; /*!< returns PCLK2 clock frequency expressed in Hz */
uint32_t ADCCLK_Frequency; /*!< returns ADCCLK clock frequency expressed in Hz */
}RCC_ClocksTypeDef;
然后在main函数中获取当前系统时钟
RCC_GetClocksFreq(&get_rcc_clock); //仿真的时候就可以在结构体get_rcc_clock中看见各个外设的时钟了
然后设置断点调试查看