可以理解main函数的Stm32_Clock_Init,可以找到:Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz 然后找到Stm32_Clock_Init的定义,void Stm32_Clock_Init(u32 plln,u32 pllm,u32 pllp,u32 pllq) 由于外部晶振是25M,现在Stm32_Clock_Init第二个参数pllm是25,因此外部晶振是25M经过/M后,变成1。然...
我们打开HAL库例程实验1跑马灯实验,看看我们在工程目录Drivers\SYSTEM分组下面定义的sys.c文件中的时钟设置函数sys_stm32_clock_init的内容: /** * @brief 时钟设置函数 * @param plln: PLL1倍频系数(PLL倍频), 取值范围: 4~512. * @param pllm: PLL1预分频系数(进PLL之前的分频), 取值范围: 2~63. *...
stap_stm32f10x_cl.s(启动文件) → SystemInit() → SetSysClock () → SetSysClockTo72() 初始化时钟用到的RCC寄存器复位值: RCC_CR = 0x0000 xx83; RCC_CFGR = 0x0000 0000;RCC_CIR = 0x0000 0000; RCC_CFGR2 = 0x0000 0000; SystemInit() 在调用 SetSysClock()之前RCC寄存器的值如下(都是...
HAL_Init(); //初始化 HAL 库 Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz delay_init(168); //初始化延时函数 uart_init(115200); //初始化 USART LED_Init(); //初始化 LED KEY_Init(); //初始化按键 TIM3_Init(5000-1,8400-1); //定时器 3 初始化,定时器时钟为 84M,分频系数...
delay_ms只是延时,格式如delay_ms(500);表示延时0.5秒。stm32_clock_init(u8 Pll)函数是系统时钟设置,比如 Stm32_Clock_Init(9); //系统时钟设置9倍频,一般放在主函数的位置中。
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG | RCC_APB2Periph_AFIO, ENABLE); } 由上述程序可以看出系统时钟的设定是比较复杂的,外设越多,需要考虑的因素就越多。同时这种...
u8 key;HAL_Init(); //初始化HAL库Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhzdelay_init(180); //初始化延时函数LED_Init(); //初始化LEDKEY_Init(); //初始化按键构造一个死循环while(1){ key是一个返回值 switch通过判断KEY的值来选择事件 ...
void SystemInit (void) { /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ ...
第146行:使用EXPORT将Reset_Handler申明为可被外部引用,后面WEAK表示弱定义,如果外部文件定义了该标号则首先引用该标号,如果外部文件没有声明也不会出错。这里表示复位程序可以由用户在其他文件重新实现,这种写法在HAL库中是很常见的。 第147-148行:表示该标号来自外部文件,SystemInit()是一个库函数,在system_stm32f1...