新闻中心
单片机开发-时钟输出的使能及其流程
在以上的时钟输出中有很多是带使能控制的,如AHB 总线时钟、内核时钟、各种APB1外设时钟、APB2 外设时钟等。
 
当需要使用某模块时,必须先使能对应的时钟。需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,
否则它的倍频值就为2。
 
连接在APB1上的设备(低速外设)有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看
 
门狗、Timer2、Timer3、Timer4。注意:USB模块虽然需要一个单独的48MHz时钟信号,但它不能供USB模块工作的时
 
钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时钟应该是由APB1提供的。
 
连接在APB2上的设备(高速外设)有:GPIO-A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO。
 
以下是时钟设置的基本流程。
 
假设,使用HSE时钟,并且使用ST的固件库函数,那么在程序中设置时钟参数的流程如下。
 
第一步:
 
将RCC寄存器重新设置为默认值,即调用函数RCC-DeInit;
 
第2部
 
打开外部高速时钟晶振HSE,调用函数RCC-HSEConfig(RCC-HSE-ON); 
 
第3步
 
等待外部高速时钟晶振工作,调用HSEStartUpStatus=RCC-WaitForHSEStartUpO; 
 
第四步
 
设置AHB时钟,即调用函数RCC-HCLKConfig;
 
第五步
 
设置高速AHB时钟,即调用函数RCC-PCLK2Config; 
 
第6步
 
设置低速AHB时钟,即调用函数RCC-PCLK1Config; 
 
第7步
 
设置PLL,即调用函数RCC-PLLConfig;
 
第8步
 
打开PLL,即调用函数RCC-PLLCmd(ENABLE);  
 
第9步
 
等待PLL工作,while(PCC-GetFLagStatus(PCC-FLAG-PLLRDY)==RESET);
 
第10步
 
设置系统时钟,即调用函数PCC-SYSCLKConfig; 
 
第11步
 
判断PLL是否是系统时钟,while(RCC-GetSYSCLKSource()!=0x08); 
 
第12步
 
打开要使用的外设时钟,即调用函数RCC-APB2PeriphCLockCmd();或者PCC-APB1PeriphClockCmd)();
 

版权所有:东莞市中创电子科技有限公司| 地址:东莞市塘厦镇第一工业区18号

总部联系电话:0755-29080943 | 传真:0755-29080943

备案号:粤ICP备10212817号-4|邮箱:TWXY@twxy-sz.com

联众棋牌