资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理及接口技术基于arm-cortex-m3-的stm32系列课件4,单片机原理及接口技术基于arm-cortex-m3-的,MDK5,环境中的时钟配置函数,程序框架,文件,Test.c,int main(void), /,变量定义,Stm32_Clock_Init(9); /,系统时钟设置,delay_init(72); /,延时初始化, /,其它初始化,while(1),2,MDK5环境中的时钟配置函数程序框架文件 Te,MDK5,环境中的时钟配置函数,程序框架,在,sys.h,中定义,Stm32_Clock_Init,函数原型,void Stm32_Clock_Init(u8 PLL); /,时钟初始化,在,sys.c,中定义,Stm32_Clock_Init,函数体,void Stm32_Clock_Init(u8 PLL),unsigned char temp=0;,MYRCC_DeInit(); /,复位并配置向量表,RCC-CR|=0x00010000;,/,外部高速时钟使能,HSEON,while(!(RCC-CR17);,/,等待外部时钟就绪,RCC-CFGR=0x00000400;,/APB1=DIV2;APB2=DIV1;AHB=DIV1;,PLL-=2;/,需要抵消,2,设成,111,时是,9,倍频,RCC-CFGR|=PLLCFGR|=1ACR|=0x32; /FLASH 2,个延时周期,RCC-CR|=0x01000000;,/PLLON,while(!(RCC-CR25);,/,等待,PLL,锁定,RCC-CFGR|=0x00000002;,/PLL,作为系统时钟,while(temp!=0x02) /,等待,PLL,作为系统时钟设置成功,temp=RCC-CFGR2;,temp /,取,2,、,3,两位,等其变为,10,4,MDK5环境中的时钟配置函数程序框架FLAS,MDK5,环境中的时钟配置函数,讨论与交流,手册上查得:,APB2ENR,第,6,位为,1,,使能,PORTE,时钟,APB2ENR,地址为:,0x40021018,分析下面的代码,理解其程序实现,4,MDK5环境中的时钟配置函数讨论与交流手册上,MDK5,环境中的时钟配置函数,讨论与交流,4,在,stm32f10x_map.h,文件中已定义:,typedef struct,vu32 CR;,vu32 CFGR;,vu32 CIR;,vu32 APB2RSTR;,vu32 APB1RSTR;,vu32 AHBENR;,vu32 APB2ENR;,vu32 APB1ENR;,vu32 BDCR;,vu32 CSR;, RCC_TypeDef;,#define PERIPH_BASE (u32)0x40000000),#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000),#define RCC_BASE (AHBPERIPH_BASE + 0x1000),#define RCC (RCC_TypeDef *) RCC_BASE),代码,RCC-APB2ENR|=16;,使能,PORTE,MDK5环境中的时钟配置函数讨论与交流4在st,Thanks,Thanks,MDK5,环境中的时钟配置函数,时钟控制寄存器(,RCC_CR,),位,16,HSEON,:外部高速时钟使能,由软件置,1,或清零。当进入待机和停止模式时,该位由硬件清零,关闭外部时钟。,当外部时钟被用作或被选择将要作为系统时钟时,该位不能被清零。,0,:,HSE,振荡器关闭,1,:,HSE,振荡器开启,MDK5环境中的时钟配置函数时钟控制寄存器(R,MDK5,环境中的时钟配置函数,位,17,HSERDY,:外部高速时钟就绪标志,由硬件置,1,来指示外部时钟已经稳定。在,HSERDY,位清零后,该位需要,6,个外部时钟周期清零。,0,:外部,1-25MHz,时钟没有就绪,1,:外部,1-25MHz,时钟就绪,时钟控制寄存器(,RCC_CR,),MDK5环境中的时钟配置函数位17 HSERD,MDK5,环境中的时钟配置函数,时钟控制寄存器(,RCC_CR,),位,24,PLLON,:,PLL,使能,由软件置,1,或清零。当进入待机和停止模式时,该位由硬件清零。,当,PLL,时钟被用作或被选择将要作为系统时钟时,该位不能被清零。,0,:,PLL,关闭,1,:,PLL,使能,MDK5环境中的时钟配置函数时钟控制寄存器(R,MDK5,环境中的时钟配置函数,时钟控制寄存器(,RCC_CR,),位,25,PLLRDY,:,PLL,时钟就绪标志,PLL,锁定后由硬件置,1,。,0,:,PLL,未锁定,1,:,PLL,锁定,MDK5环境中的时钟配置函数时钟控制寄存器(R,MDK5,环境中的时钟配置函数,时钟配置寄存器(,RCC_CFGR,),位,7:4,HPRE,:,AHB,预分频,由软件设置来控制,AHB,预分频系数。,0xxx,:,SYSCLK,不分频,位,10:8,PPRE1,:低速,APB,预分频(,APB1,),由软件设置来控制低速,APB1,预分频系数。保证,APB1,时钟频率不超过,36MHz,。,100,:,HCLK 2,分频,位,13:11,PPRE2,:高速,APB,预分频(,APB2,),由软件设置来控制高速,APB2,预分频系数。,0xx,:,HCLK,不分频,MDK5环境中的时钟配置函数时钟配置寄存器(R,MDK5,环境中的时钟配置函数,时钟配置寄存器(,RCC_CFGR,),位,21:18,PLLMUL,:,PLL,倍频系数,由软件设置来确定,PLL,倍频系数。只有在,PLL,关闭的情况下才可被写入。,PLL,输出频率不能超过,72MHz,0000,:,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 16,倍频输出,MDK5环境中的时钟配置函数时钟配置寄存器(R,MDK5,环境中的时钟配置函数,时钟配置寄存器(,RCC_CFGR,),位,16,PLLSRC,:,PLL,输入时钟源,由软件设置来选择,PLL,输入时钟源。该位只有在,PLL,关闭时才可以被写入。,0,:,HSI,时钟,2,分频后作为,PLL,输入时钟,1,:,HSE,时钟作为,PLL,输入时钟,MDK5环境中的时钟配置函数时钟配置寄存器(R,MDK5,环境中的时钟配置函数,时钟配置寄存器(,RCC_CFGR,),位,1:0,SW,:系统时钟切换,由软件设置来选择系统时钟源。,00,:,HSI,作为系统时钟,01,:,HSE,作为系统时钟,10,:,PLL,输出作为系统时钟,11,:不可用,MDK5环境中的时钟配置函数时钟配置寄存器(R,MDK5,环境中的时钟配置函数,时钟配置寄存器(,RCC_CFGR,),位,3:2,SWS,:系统时钟切换状态,由硬件置,1,和清零来指示哪一个时钟源被作为系统时钟。,00,:,HSI,作为系统时钟,01,:,HSE,作为系统时钟,10,:,PLL,输出作为系统时钟,11,:不可用,MDK5环境中的时钟配置函数时钟配置寄存器(R,感谢聆听,感谢聆听,
展开阅读全文