3.5的库中什么也不必做。现已在发动文件中设置好了时钟。
咱们都知道在运用单片机时,时钟速度决定于外部晶振或内部RC振动电路的频率,是不可以改动的。而ARM的呈现打破了这一传统的规律,可以经过软件随意改动时钟速度。这一呈现让咱们的规划愈加灵敏,可是也给咱们的规划增加了杂乱性。为了让用户可以更简略的运用这一功用,STM32的库函数现已为咱们规划的愈加简略便利。
ErrorStatus HSEStartUpStatus;
void RCC_Configuration(void)
{
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
}
随之函数库的不断晋级,到3.0以上时,咱们就不必再这样编写时钟设置了,咱们只要做如下两部即可:
第一个: system_stm32f10x.c 中#define SYSCLK_FREQ_72MHz 72000000
第二个:调用SystemInit()
阐明:在stm32固件库3.0中对时钟频率的挑选进行了大大的简化,原先的一大堆操作都在后台进行。体系给出的函数为SystemInit()。但在调用前还需求进行一些宏界说的设置,详细的设置在system_stm32f10x.c文件中。
文件最初就有一个这样的界说:
//#define SYSCLK_FREQ_HSE
//#define SYSCLK_FREQ_20MHz 20000000
//#define SYSCLK_FREQ_36MHz 36000000
//#define SYSCLK_FREQ_48MHz 48000000
//#define SYSCLK_FREQ_56MHz 56000000
也便是103系列能跑到的最大值72M
然后这个 C文件持续往下看
#elif defined SYSCLK_FREQ_72MHz
const uint32_t SystemFrequency
const uint32_t SystemFrequency_SysClk
const uint32_t SystemFrequency_AHBClk
const uint32_t SystemFrequency_APB1Clk
const uint32_t SystemFrequency_APB2Clk
#elif defined SYSCLK_FREQ_72MHz
static void SetSysClockTo72(void);
所以设置体系时钟的流程便是: 首要用户程序调用 SystemInit()函数,这是一个库函数,然后 SystemInit()函数里边,进行了一些寄存器必要的初始化后,就调用 SetSysClock()函数. SetSysClock()函数依据那个#define SYSCLK_FREQ_72MHz 72000000 的宏界说,知道了要调用SetSysClockTo72()这个函数,所以,就一堆费事而杂乱的设置~!@#$%^然后,CPU跑起来了,并且速度是 72M.