建议使用STM32CubeMX来配置,以STM32103C8T6为例,如下图所示:
你确定两个晶振都是主晶振?32一般用8M的晶振然后通过PLL倍频和后面的分频器来配置到各个需要的频率,32.768K的是RTC的晶振吧~~~
软件里面的选择只有HSI(高速内部时钟)、HSE(高速外部时钟)、LSI、HSI等等,没法选晶振吧
这两个晶振实现的是不同的功能,32.768k晶振是用于内部RTC时钟的,而8M晶振是用于STM32系统时钟的。两个的用途不一样,而且在硬件上连接了,也需要到软件中开启相应的功能才能用上这两个晶振。
涉及的寄存器: RCC 寄存器结构,RCC_TypeDeff,在文件“stm32f10x_map.h”中定义如下: typedef struct { vu32 CR; //HSIHSECSSPLL等的使能 vu32 CFGR; //PLL等的时钟源选择以及分频系数设定 vu32 CIR; // 清除/使能 时钟就绪中断 vu32 APB2RSTR; //APB2线上外设复位寄存器 vu32 APB1RSTR; //APB1线上外设复位寄存器 vu32 AHBENR; //DMA,SDIO等时钟使能 vu32 APB2ENR; //APB2线上外设时钟使能 vu32 APB1ENR; //APB1线上外设时钟使能 vu32 BDCR; //备份域控制寄存器 vu32 CSR; } RCC_TypeDef; 可以对上上面的时钟框图和RCC寄存器来学习,对STM32的时钟系统有个大概的了解,然后对照我们的《STM32不完全手册》的系统时钟配置函数void Stm32_Clock_Init(u8 PLL)一同来学习。
8MHz是给单片机用的外部晶振,32.768kHz用于RTC时钟。
需要使用哪一个,配置一下就行。
32.768KHz是实时时钟(RTC)一般是为了保证断电了,还能正常计时
代码里用的是8M的晶振