三.获取各系统时钟方法
//在stm32f10x_rcc.h中定义
/*定义枚举类型变量获取时钟类型**/
typedef enum
{
SYSCLK_frequency=0u, /* 获取SYSCLK时钟 */
AHB_frequency=1u, /* 获取AHB时钟 */
APB1_frequency=2u, /* 获取APB1时钟 */
APB2_frequency=3u, /* 获取APB2时钟 */
ADCCLK_frequency=4u, /* 获取APB2时钟 */
}RCC_clock_type;
u32 Get_rcc_clock(RCC_clock_type clock_type); //声明获取当前时钟函数
//在stm32f10x_rcc.c中定义
u32 Get_rcc_clock(RCC_clock_type clock_type)
{
u32 RCC_clock;
RCC_ClocksTypeDef get_rcc_clock; //获取系统时钟状态
RCC_GetClocksFreq(&get_rcc_clock); //通过结构体get_rcc_clock获取各时钟
switch (clock_type)
{
case SYSCLK_frequency:
RCC_clock=get_rcc_clock.SYSCLK_Frequency; //获取SYSCLK时钟
break;
case AHB_frequency:
RCC_clock=get_rcc_clock.HCLK_Frequency; //获取AHB时钟
break;
case APB1_frequency:
RCC_clock=get_rcc_clock.PCLK1_Frequency; //获取APB1时钟
break;
case APB2_frequency:
RCC_clock=get_rcc_clock.PCLK2_Frequency; //获取APB2时钟
break;
case ADCCLK_frequency:
RCC_clock=get_rcc_clock.ADCCLK_Frequency; //获取ADCCLK时钟
break;
default:
RCC_clock=0;
break;
}
return RCC_clock;
}
//在main.c中获取当前时钟
printf("SYSCLK_frequency=%d\r\n",Get_rcc_clock(SYSCLK_frequency));
printf("AHB_frequency=%d\r\n",Get_rcc_clock(AHB_frequency));
printf("APB1_frequency=%d\r\n",Get_rcc_clock(APB1_frequency));
printf("APB2_frequency=%d\r\n",Get_rcc_clock(APB2_frequency));
printf("ADCCLK_frequency=%d\r\n",Get_rcc_clock(ADCCLK_frequency));
|