您的位置 首页 制造

STM32时钟操控RCC

对于单片机系统来说,CPU和总线以及外设的时钟设置是非常重要的,因为没有时钟就没有时序,组合电路能干什么想必各位心里都清楚。其实时钟

关于单片机体系来说,CPU和总线以及外设的时钟设置是非常重要的,因为没有时钟就没有时序,组合电路精干什么想必各位心里都清楚。其实时钟的学习这部分应该提早一些,但因为一开端时间比较短,有些急于求成,所以直接运用了万利给的例程,权且跳过了这一步。介于下面我方案要学习的使命都涉及到兆级的高速传输,例如全速USB,DMA等等,所以不能再疏忽时钟啦,必需求仔细研究一下。

我学习RCC的参考资料:
技能文档0427及其中文翻译版STM32F10xxx_Library_Manual_ChineseV2的第十五章和RM0008_CH参考手册。

预备常识:
片上总线标准品种繁复,而由ARM公司推出的AMBA片上总线受到了广阔IP开发商和SoC体系集成者的喜爱,已成为一种盛行的工业标准片上结构。AMBA标准首要包含了AHB(Advanced High performance Bus)体系总线和APB(Advanced Peripheral Bus)外围总线。二者别离适用于高速与相对低速设备的衔接。

因为时钟是一个由内而外的东西,详细设置要从寄存器开端。

RCC 寄存器结构,RCC_TypeDeff,在文件“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;

这些寄存器的详细界说和运用方法拜见芯片手册,在此不赘述,因为C言语的开发能够不好他们直接打交道,当然假如能够加以了解和回忆,无疑是百利而无一害。

信任仔细的朋友早就发现板子上只要8Mhz的晶振,而增强型最高作业频率为72Mhz,明显需求用PLL倍频9倍,这些设置都需求在初始化阶段完结。为了便利阐明,我借用一下例程的RCC设置函数,并用中文注释的方式加以阐明:

//在此指出上面的注释头应该是仿制过来的,写错了…不过不要紧,反正没参数需求阐明,重要的是函数体。
static void RCC_Config(void)
{

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if (HSEStartUpStatus == SUCCESS)
{

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);


FLASH_SetLatency(FLASH_Latency_2);


RCC_HCLKConfig(RCC_SYSCLK_Div1);


RCC_PCLK2Config(RCC_HCLK_Div1);


RCC_PCLK1Config(RCC_HCLK_Div2);


RCC_ADCCLKConfig(RCC_PCLK2_Div6);


//上面这句例程中缺失了,但却很要害

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);


RCC_PLLCmd(ENABLE);


while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{}


RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);


while (RCC_GetSYSCLKSource() != 0x08)
{}
}


//使能外围接口总线时钟,留意各外设的从属状况,不同芯片的分配不同,到时候查手册就能够
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
RCC_APB2Periph_AFIO, ENABLE);
}

由上述程序能够看出体系时钟的设定是比较复杂的,外设越多,需求考虑的要素就越多。一起这种设定也是有规则可循的,设定参数也是有次序标准的,这是使用中应当留意的,例如PLL的设定需求在使能之前,一旦PLL使能后参数不行更改。

通过此番设置后,因为我的电路板上是8Mhz晶振,所以体系时钟为72Mhz,高速总线和低速总线2都为72Mhz,低速总线1为36Mhz,ADC时钟为12Mhz,USB时钟通过1.5分频设置就能够完成48Mhz的数据传输。

一般性的时钟设置需求先考虑体系时钟的来历,是内部RC仍是外部晶振仍是外部的振荡器,是否需求PLL。然后考虑内部总线和外部总线,最终考虑外设的时钟信号。遵从先倍频作为CPU时钟,然后在由内向外分频,下级姑息上级的准则有点儿相似PCB制图的标准化要求,在这里也相同。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/256512.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部