STM32中使用任何一个外设都必须打开相应的时钟。在STM32中有5个时钟源可供用户选择:
1.HSI高速内部时钟,RC震荡器,频率为8MHz。
2.HSE高速外部时钟,右英/陶瓷谐振器,或着外部时钟源,4MHz-16MHz.
3.LSI内部低速时钟,RC震荡器频率为40Hz。
4.LSE外部低速时钟,接频率为32.768KHz的石英晶体。
5.PLL锁相环频输出,时钟源可选为HIS/2、HSE或HSE/2。倍频可选2-16倍,但其输出频率最大不能超过72MHz。
系统时钟SYSCLK,它是供STM32中绝大部分器件工作的时钟源,系统时钟可选择为PLL输出、HSI或者HSE。系统时钟的做大频率为72MHz,它通过AHB分频器分频后送给个模块使用,AHB分频器可选择1、2...512分频。AHB分频器输出的时钟送给5大模块使用:
1.送给AHB总线、内核、内存、DMA使用的HCLK时钟。
2.通过8分频送给系统定时器的定时时钟(嘀嗒定时器)。
3.直接送给Cortex的空闲时钟PCLK。
4.送给APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36M)另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或着2倍频,时钟输出供定时器2、3、4使用。
5.送给APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72M)另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或着2倍频。时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选 择为2、4、6、8分频。
连接在APB1(低速外设)上设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、TIMER2、TIMER3、TIMER4。
连接在APB2(高速外设)上设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口、第二功能IO口。
关键字:STM32 震荡器
引用地址:
STM32入门——时钟篇
推荐阅读最新更新时间:2024-10-31 11:12
STM32使用esp8266和MQTT协议与OneNET平台进行通信
单片机是STM32f103系列,通信模块是esp8266,协议MQTT,可以实现向OneNET传输数据(可以是传感器),OneNET平台返回数据对系统进行控制 单片机源程序如下: #include main.h int main() { u16 timeCount = 0; //发送间隔变量 u8 *dataPtr = NULL; u8 data ={0x12,0x23,0x45,0x68,0x79,0xAB,0x00,0xEF}; u8 buf ; Stm32_Clock_Init(9); //系统时钟设置 uart_init(72,9600
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(一)
用PWM的方法实现荧火虫灯 上次提到要用Timer的PWM功能来实现荧火虫灯。当然还是找一个现成的例子来作个修改,这回要用到的例子在这里。 复制一份到自己练习用的文件夹中,建立工程。 先阅读readme.txt及源程序,了解一些基本信息。 从程序中可以知道: (1) 使用TIM3 (2) 定时器的时钟频率是36MHz. (3) PWM信号的频率是36KHz,这是通过TIM3的ARR来设置的。ARR的值是999,因此PWM的频率是36MHz/(999+1)=36KHz。 (4) 四个通道的占空比分别由TIM3_CCR1~TIM3_CCR4来确定,算式是:
[模拟电子]
如何在STM32中得到最佳的ADC精度
STM32家族中的所有芯片都内置了逐次逼近寄存器型ADC模块.内部大致框架如下: 每次ADC转换先进行采样保持,然后分多步执行比较输出,步数等于ADC的位数,每个ADC时钟产生一个数据位。说到这里,用过STM32 ADC的人是不是想到了参考手册中关于12位ADC转换时间的公式: ST官方就如何保障或改善ADC精度写了一篇应用笔记AN2834。该应用笔记旨在帮助用户了解ADC误差的产生以及如何提高ADC的精度。主要介绍了与ADC设计的相关内容,比如外部硬件设计参数,不同类型的ADC误差来源分析等,并提出了一些如何减小误差的设计上建议。 当我们在做STM32的ADC应用遇到转换结果不如意时,常有人提醒或建议你对采样时间或
[单片机]
意法半导体新型STM32系列获ARM RealView微控制器开发工具包支持
中国上海,2007年6月27日 —— ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)宣布即日起,RealView微控制器开发工具包将支持意法半导体基于ARM Cortex-M3处理器的全新 STM32F1xx系列器件。 STM32F101 (接入行)和STM32F103 (性能行)将是意法半导体首个基于ARM Cortex-M3处理器的器件系列,兼具卓越的高性能和低功耗,待机功耗仅为2?A。该系列器件拥有高达72MHz的CPU时钟速度、128Kbyte片上闪存ROM及20Kbyte片上RAM,还包括A/D、CAN、USB、SPI、I2C等众多外设及多达80个GPIO。 RealView微控制器开发工具包3.1可
[新品]
stm32之IIC应用实例(AT24C02芯片,硬件和软件方式驱动)
写完回头一看发现字数还不少,如果你觉得文字太枯燥,那么可以跳到后面程序设计,直接动手做实验。如果想仔细了解关于IIC协议的细节,那么希望你能慢慢把看完,看完后一定有所收获。 概述:IIC BUS(Inter Integrated Circuit BUS,内部集成电路总线)是飞利浦公司推出的二线制串行扩展总线;在IIC总线上,只需要两条线——数据线SDA线和时钟线SCL;多个器件可连接到同一个IIC总线上,每一个器件有一个唯一的识别地址,可一对多、多对一、一对一通讯;标准模式下传输速度为100Kb/s,快速模式下为400Kb/s。优点:引脚少,硬件实现简单,成本低。 关于IIC的接口原理有些书可以描述出好几页,但有时候看完了
[单片机]
STM32 LED灯的另一种写法
#ifndef __BSP_LED_ #define __BSP_LED_ #include MM32x103.h // 这个换成STM32的库文件就行 #include type.h //================================================================================== #define LED1_RUN_GRP GPIOC #define LED1_RUN_IDX GPIO_Pin_6 #define LED1_RUN_OFF() GPIO_ResetBits(LED1_RUN_GRP, LED1_RUN_IDX) #define
[单片机]
STM32 通用定时器的学习
使用STM32通用定时器产生中断的步骤: 1)TIM3时钟使能 2)设置TIM3_ARR和TIM3_PSC的值 通过这两个寄存器,我们来设置自动重装的值,以及分频系数。这两个参数加上时钟频率,就决定了定时器的溢出时间。 3)设置TIM3_DIER允许更新中断 因为我们要使用TIM3的更新中断,所以设置DIRE 的UIE位,并使能触发中断 4)允许TIM3工作 光配置定时器还不行,没有开启定时器,照样不能使用。我们在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。 TIM3_CR1是控制寄存器,控制定时器的开启,还有一些工作方式。 5)TIM3中断分组设置 在定时器配置完了以后,因为要产生中断,必不可少的
[单片机]
我的STM32从菜鸟到牛人的学习步骤
1.首先我们先看看与STM32相关的文档 我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。如果你手上拥有ST官方主推的STM32神舟系列的板子,那么光盘都会配好这些文档,STM32的学习与ARM9的学习有一个很大的区别。ARM9的学习一般是需要购买书籍的。比如三星的S3C2440,官方的文档都是英文的,大部分工程师只能去看国内出版的书籍。英文好的同学,请不要以为你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处
[单片机]