干货|stm32f4功能介绍
这篇文章主要介绍stm32f4的时钟树、定时器、通信方式(串口、I2C).话不多说,直奔主题。
一、时钟树下图是STM32F4系列的时钟树:
01
时钟的来源:时钟源STM32的时钟源主要有:内部时钟、外部时钟、锁相环倍频输出时钟。内部时钟、外部时钟又分为告诉时钟、低速时钟。锁相环倍频输出时钟又主PLL时钟、PLLI2S时钟。具体如下图所示:
1、LSI(低速内部时钟):由内部RC振荡器产生,频率为32kHz。如图区域①;
2、HSI(高速内部时钟):由内部RC振荡器产生,频率为16MHz。如图区域②;
3、LSE(低速外部时钟):一般由外部晶振提供,频率为32.768kHz。如图区域③;
4、HSE(低速外部时钟):一般由外部晶振提供,频率为4~26MHz。如图区域④;
5、主PLL时钟:由HSE或HSI提供。如图区域⑤;
6、PLLI2S时钟:由HSE或HSI提供。如图区域⑥;
02
时钟供给系统工作的方式:
时钟的流向
我们已经知道了各个时钟源的输入,那么有了输入的时钟源,各个时钟源又是分别输出给哪些外设工作。我们分别从时钟源输入处开始,根据走线和结点,寻找到相应的输出。对应编号如下图中所示。
1、LSI低速内部时钟:供给独立看门狗⑴、实时时钟RTC⑵
2、HSI高速内部时钟:供给系统时钟⑸、时钟输出1MCO1
⑷、主PLL时钟⑹、PLLI2S时钟⑺
3、LSE低速外部时钟:供给实时时钟RTC⑵、时钟输出1MCO1⑷
4、HSE低速外部时钟:供给系统时钟⑸、实时时钟RTC⑵、主PLL时钟⑹、PLLI2S时钟⑺、时钟输出1MCO1⑷、时钟输出2MCO2⑶
5、主PLL时钟:供给系统时钟⑸、外设时钟⑻、时钟输出1MCO1⑷、时钟输出2MCO2⑶
6、PLLI2S时钟::供给I2S时钟⑼、时钟输出1MCO1⑷、时钟输出2MCO2⑶
HSI、HSE、主PLL时钟都可以供给系统时钟⑸,STM32的很多外设是挂载在AHB、APB总线桥上的,这些外设的时钟又是怎么样的,这就和系统时钟的流向有关了,系统时钟的流向分析如下:
1、供给时钟输出2MCO2⑶
2、供给以太网PTP时钟⑽
3、经AHBPRESC预分频器⑾后:HCLK到AHB总线、内核、存储器和DMA⒁,到Cortex系统定时器⒂,自由运行时钟⒃
4、经AHBPRESC预分频器⑾、APBxPRESC预分频器⑿后:供给APBx外设时钟⒄
5、经AHBPRESC预分频器⑾、APBxPRESC预分频器后⑿,再经倍频条件判断⒀处理后:供给APBx定时器时钟⒅
用多个时钟源、分层控制时钟的好处:
1、一个外设有多个时钟源:可以根据需要选择相应频率的时钟源。
2、分层、分开控制外设时钟:使得各个外设的时钟都是可控的,各个外设有对应的时钟控制开关,实际应用过程根据需要开启相应外设时钟,不需要的外设时钟不开启,可以降低功耗。
二、定时器定时器分为高级定时器、通用定时器、基本定时器,下面简要介绍一下。
1高级定时器(TIM1、TIM8)
TIM1和TIM8定时器具有以下特性:
● 16位递增、递减、递增/递减自动重载计数器。
● 16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1到65536之间。
● 多达4个独立通道,可用于:— 输入捕获 — 输出比较 — PWM生成(边沿和中心对齐模式)— 单脉冲模式输出
● 带可编程死区的互补输出。
●使用外部信号控制定时器且可实现多个定时器互连的同步电路。
●重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器。
●用于将定时器的输出信号置于复位状态或已知状态的断路输入。
● 发生如下事件时生成中断/DMA请求:— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)— 输入捕获 — 输出比较 — 断路输入
●支持定位用增量(正交)编码器和霍尔传感器电路。
●外部时钟触发输入或逐周期电流管理。
2通用定时器
1) TIM2-TIM5
TIM2到TIM5定时器具有以下特性:
● 16位(TIM3和TIM4)或32位(TIM2和TIM5)递增、递减和递增/递减自动重载计数器。
● 16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于1到65536之间。
● 多达4个独立通道,可用于:— 输入捕获 — 输出比较 — PWM生成(边沿和中心对齐模式)— 单脉冲模式输出
●使用外部信号控制定时器且可实现多个定时器互连的同步电路。
● 发生如下事件时生成中断/DMA请求:
—更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
—触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
●支持定位用增量(正交)编码器和霍尔传感器电路
● 外部时钟触发输入或逐周期电流管理
2)TIM9-TIM14
TIM9到TIM14通用定时器具有以下特性:
● 16位自动重载递增计数器(属于中等容量器件)
● 16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1和65536之间
● 多达2个独立通道,可用于:— 输入捕获 — 输出比较 — PWM生成(边沿对齐模式)— 单脉冲模式输出
●使用外部信号控制定时器且可实现多个定时器互连的同步电路
● 发生如下事件时生成中断:
—更新:计数器上溢、计数器初始化(通过软件或内部触发)
—触发事件(计数器启动、停止、初始化或者由内部触发计数)
— 输入捕获
— 输出比较
3基本定时器(TIM6和TIM7)
TIM6和TIM7的特性包括:
● 16位自动重载递增计数器
●16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1和65536之间
● 用于触发DAC的同步电路
●发生如下更新事件时会生成中断/DMA请求:计数器上溢
三、通讯方式1串口通信.串口通信:是指数据的各位在同一根数据线上逐位发送和接收。如下图
串口通信的特点:控制复杂,传输速度慢;只需要一根数据线,适用于远距离通信。
2I2C通信通信协议:总线在空闲状态时,SCL(时钟总线)和SDA(数据总线)都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件
以下是三种对I2C总线的操作情况:第一,主设备往从设备中写数据。数据传输格式如下:
第二,主设备从从设备中读数据。数据传输格式如下:
第三,主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下:
了解STM32常用功能:
https://mp.weixin.qq.com/s/uxVc7st7l57x2iWnnGIR-Q
▼ 更多精彩推荐,请关注我们 ▼文案 许宗清
排版 许宗清