1、ARM Cortex-M3 的STM32系列MDK5环境中的时钟配置函数 MDK5环境中的时钟配置函数程序框架文件文件 Test.cTest.cint main(void)/变量定义 Stm32_Clock_Init(9);/系统时钟设置delay_init(72);/延时初始化 /其它初始化while(1)2 MDK5环境中的时钟配置函数程序框架在sys.h中定义Stm32_Clock_Init函数原型 void Stm32_Clock_Init(u8 PLL);/时钟初始化 在sys.c中定义Stm32_Clock_Init函数体 void Stm32_Clock_Init(u8 PLL)
2、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;/FLASH 2个延时周期 RCC-CR|=0 x01000000;/PLLONwhile(!(RCC-CR25);/等待PLL锁定RCC-CFGR|=0 x00000
3、002;/PLL作为系统时钟 while(temp!=0 x02)/等待PLL作为系统时钟设置成功 temp=RCC-CFGR2;temp&=0 x03;/取2、3两位,等其变为10 4 MDK5环境中的时钟配置函数讨论与交流手册上查得:APB2ENR第6位为1,使能PORTE时钟APB2ENR地址为:0 x40021018分析下面的代码,理解其程序实现4 MDK5环境中的时钟配置函数讨论与交流4在在stm32f10 x_map.hstm32f10 x_map.h文件中已定义:文件中已定义:typedef structtypedef struct vu32 CR;vu32 CR;vu32 CF
4、GR;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;vu32 CSR;RCC_TypeDefRCC_TypeDef;#define PERIPH_BASE (u32)0 x40000000)#define PERIPH_BASE (u32)0 x40000000)#d
5、efine 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 (#define RCC (RCC_TypeDefRCC_TypeDef *)RCC_BASE)RCC_BASE)代码 RCC-APB2ENR|=16;使能PORTEThanks MDK5环境中的时钟配置函数时钟控制寄存器(RCC_CR
6、)位16 HSEON:外部高速时钟使能由软件置1或清零。当进入待机和停止模式时,该位由硬件清零,关闭外部时钟。当外部时钟被用作或被选择将要作为系统时钟时,该位不能被清零。0:HSE振荡器关闭1:HSE振荡器开启 MDK5环境中的时钟配置函数位17 HSERDY:外部高速时钟就绪标志由硬件置1来指示外部时钟已经稳定。在HSERDY位清零后,该位需要6个外部时钟周期清零。0:外部1-25MHz时钟没有就绪1:外部1-25MHz时钟就绪时钟控制寄存器(RCC_CR)MDK5环境中的时钟配置函数时钟控制寄存器(RCC_CR)位24 PLLON:PLL使能由软件置1或清零。当进入待机和停止模式时,该位由
7、硬件清零。当PLL时钟被用作或被选择将要作为系统时钟时,该位不能被清零。0:PLL关闭1:PLL使能 MDK5环境中的时钟配置函数时钟控制寄存器(RCC_CR)位25 PLLRDY:PLL时钟就绪标志PLL锁定后由硬件置1。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:高速A
8、PB预分频(APB2)由软件设置来控制高速APB2预分频系数。0 xx:HCLK不分频 MDK5环境中的时钟配置函数时钟配置寄存器(RCC_CFGR)位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:
9、PLL 12倍频输出 1011:PLL 13倍频输出1100:PLL14倍频输出 1101:PLL 15倍频输出 1110/1111:PLL 16倍频输出 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:不可用