1、单片机原理及接口技术基于arm-cortex-m3-的stm32系列课件4 MDK5环境中的时钟配置函数环境中的时钟配置函数程序框架程序框架文件文件 Test.cTest.cint main(void)/变量定义 Stm32_Clock_Init(9);/系统时钟设置delay_init(72);/延时初始化 /其它初始化while(1)MDK5环境中的时钟配置函数环境中的时钟配置函数程序框架程序框架在在sys.hsys.h中定义中定义Stm32_Clock_InitStm32_Clock_Init函数原型函数原型 void Stm32_Clock_Init(u8 PLL);/时钟初始化在在s
2、ys.csys.c中定义中定义Stm32_Clock_InitStm32_Clock_Init函数体函数体 void Stm32_Clock_Init(u8 PLL)unsigned char temp=0;MYRCC_DeInit();/复位并配置向量表 RCC-CR|=0 x00010000;/外部高速时钟使能HSEON while(!(RCC-CR17);/等待外部时钟就绪 RCC-CFGR=0 x00000400;/APB1=DIV2;APB2=DIV1;AHB=DIV1;PLL-=2;/需要抵消2,设成111时是9倍频 RCC-CFGR|=PLLCFGR|=1ACR|=0 x32;/
3、FLASH 2个延时周期RCC-CR|=0 x01000000;/PLLONwhile(!(RCC-CR25);/等待PLL锁定RCC-CFGR|=0 x00000002;/PLL作为系统时钟 while(temp!=0 x02)/等待PLL作为系统时钟设置成功 temp=RCC-CFGR2;temp&=0 x03;/取2、3两位,等其变为10 MDK5环境中的时钟配置函数环境中的时钟配置函数讨论与交流讨论与交流手册上查得:APB2ENR第6位为1,使能PORTE时钟APB2ENR地址为:0 x40021018分析下面的代码,理解其程序实现 MDK5环境中的时钟配置函数环境中的时钟配置函数讨论
4、与交流讨论与交流在在stm32f10 x_map.hstm32f10 x_map.h文件中已定义:文件中已定义:typedef structtypedef struct vu32 CR;vu32 CR;vu32 CFGR;vu32 CFGR;vu32 CIR;vu32 CIR;vu32 APB2RSTR;vu32 APB2RSTR;vu32 APB1RSTR;vu32 APB1RSTR;vu32 AHBENR;vu32 AHBENR;vu32 APB2ENR;vu32 APB2ENR;vu32 APB1ENR;vu32 APB1ENR;vu32 BDCR;vu32 BDCR;vu32 CSR;
5、vu32 CSR;RCC_TypeDef;RCC_TypeDef;#define PERIPH_BASE (u32)0 x40000000)#define PERIPH_BASE (u32)0 x40000000)#define AHBPERIPH_BASE (PERIPH_BASE+0 x20000)#define AHBPERIPH_BASE (PERIPH_BASE+0 x20000)#define RCC_BASE (AHBPERIPH_BASE+0 x1000)#define RCC_BASE (AHBPERIPH_BASE+0 x1000)#define RCC (RCC_Type
6、Def#define RCC (RCC_TypeDef*)RCC_BASE)RCC_BASE)代码代码 RCC-APB2ENR|=16;使能使能PORTEThanks MDK5环境中的时钟配置函数环境中的时钟配置函数时钟控制寄存器(时钟控制寄存器(RCC_CR)位位16 HSEON:外部高速时钟使能由软件置1或清零。当进入待机和停止模式时,该位由硬件清零,关闭外部时钟。当外部时钟被用作或被选择将要作为系统时钟时,该位不能被清零。0:HSE振荡器关闭1:HSE振荡器开启 MDK5环境中的时钟配置函数环境中的时钟配置函数位位17 HSERDY:外部高速时钟就绪标志由硬件置1来指示外部时钟已经稳定。
7、在HSERDY位清零后,该位需要6个外部时钟周期清零。0:外部1-25MHz时钟没有就绪1:外部1-25MHz时钟就绪时钟控制寄存器(时钟控制寄存器(RCC_CR)MDK5环境中的时钟配置函数环境中的时钟配置函数时钟控制寄存器(时钟控制寄存器(RCC_CR)位位24 PLLON:PLL使能由软件置1或清零。当进入待机和停止模式时,该位由硬件清零。当PLL时钟被用作或被选择将要作为系统时钟时,该位不能被清零。0:PLL关闭1:PLL使能 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟控制寄存器(时钟控制寄存器(RCC_CR)位位25 PLLRDY:PLL时钟就绪标志PLL锁定后由硬件置1。
8、0:PLL未锁定1:PLL锁定 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟配置寄存器(时钟配置寄存器(RCC_CFGR)位位7:4 HPRE:AHB预分频由软件设置来控制AHB预分频系数。0 xxx:SYSCLK不分频位位10:8 PPRE1:低速APB预分频(APB1)由软件设置来控制低速APB1预分频系数。保证APB1时钟频率不超过36MHz。100:HCLK 2分频位位13:11 PPRE2:高速APB预分频(APB2)由软件设置来控制高速APB2预分频系数。0 xx:HCLK不分频 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟配置寄存器(时钟配置寄存器(RCC_CFG
9、R)位位21:18 PLLMUL:PLL倍频系数由软件设置来确定PLL倍频系数。只有在PLL关闭的情况下才可被写入。PLL输出频率不能超过72MHz0000:PLL 2倍频输出 0001:PLL 3倍频输出 0010:PLL 4倍频输出0011:PLL 5倍频输出 0100:PLL 6倍频输出 0101:PLL 7倍频输出0110:PLL 8倍频输出 0111:PLL 9倍频输出 1000:PLL 10倍频输出1001:PLL 11倍频输出 1010:PLL 12倍频输出 1011:PLL 13倍频输出1100:PLL14倍频输出 1101:PLL 15倍频输出 1110/1111:PLL 1
10、6倍频输出 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟配置寄存器(时钟配置寄存器(RCC_CFGR)位位16 PLLSRC:PLL输入时钟源由软件设置来选择PLL输入时钟源。该位只有在PLL关闭时才可以被写入。0:HSI时钟2分频后作为PLL输入时钟1:HSE时钟作为PLL输入时钟 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟配置寄存器(时钟配置寄存器(RCC_CFGR)位位1:0 SW:系统时钟切换由软件设置来选择系统时钟源。00:HSI作为系统时钟01:HSE作为系统时钟10:PLL输出作为系统时钟11:不可用 MDK5环境中的时钟配置函数环境中的时钟配置函数时钟配置寄存器(时钟配置寄存器(RCC_CFGR)位位3:2 SWS:系统时钟切换状态由硬件置1和清零来指示哪一个时钟源被作为系统时钟。00:HSI作为系统时钟01:HSE作为系统时钟10:PLL输出作为系统时钟11:不可用