STM32F407 之 高级定时器功能描述

发布者:水手谷水手最新更新时间:2017-09-26 来源: eefocus关键字:STM32F407  高级定时器 手机看文章 扫描二维码
随时随地手机看文章

主要介绍下自己用到的一些功能


1、时基单元

主要包括:

● 计数器寄存器 (TIMx_CNT)

● 预分频器寄存器 (TIMx_PSC)

● 自动重载寄存器 (TIMx_ARR)

● 重复计数器寄存器 (TIMx_RCR)


预分频器说明:预分频器可对计数器时钟频率进行分频,分频系数介于 1 和 65536 之间。该预分频器基于TIMx_PSC 寄存器中的 16 位寄存器所控制的 16 位计数

器。由于该控制寄存器具有缓冲功能,因此可对预分频器进行实时更改。而新的预分频比将在下一更新事件发生时被采用。


2、计数器模式:递增、递减、中央对齐模式(递增、递减)

1)递增计数模式(向上计数模式):计数器从 0 计数到自动重载值( TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。如果使用重复

计数器,则当递增计数的重复次数达到重复计数器寄存器中编程的次数加一次(TIMx_RCR+1) 后,将生成更新事件 (UEV)。否则,将在每次计数器上溢时产生更新

事件。

2)递减计数模式(向下计数模式):计数器从自动重载值( TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢

事件。与上面的类似。


3)中央对齐模式:计数器从 0 开始计数到自动重载值( TIMx_ARR 寄存器的内容)- 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。有1、2、3,三种模式。


3、重复计数器


只有当重复计数器达到零时,才会生成更新事件。这在生成 PWM 信号时很有用。

这意味着,每当发生 N+1 个计数器上溢或下溢(其中, N 是 TIMx_RCR 重复计数器寄存器中的值),数据就将从预装载寄存器转移到影子寄存器( TIMx_ARR

自动重载寄存器、TIMx_PSC 预分频器寄存器以及比较模式下的 TIMx_CCRx 捕获/比较寄存器。

重复计数器在下列情况下递减:

● 递增计数模式下的每个计数器上溢。

● 递减计数模式下的每个计数器下溢。

● 中心对齐模式下每个计数器上溢和计数器下溢。尽管这使得最大重复次数不超过 128 个PWM 周期,但在每个 PWM 周期内可更新占空比两次。当在中心对齐

模式下,每个PWM 周期仅刷新一次比较寄存器时,由于模式的对称性,最大分辨率为 2xTck。


4、时钟选择

计数器时钟可由下列时钟源提供:

● 内部时钟 (CK_INT)

● 外部时钟模式 1:外部输入引脚

● 外部时钟模式 2:外部触发输入 ETR

● 外部触发输入 (ITRx):使用一个定时器作为另一定时器的预分频器,例如,可将定时器1 配置为定时器 2 的预分频器。


5、PWM 输入模式:对于PWM输入,主要是测频率与测占空比。


6、强置输出模式:通过设置CCMR寄存器,可以使OCxREF强制为高或低一种状态。且计数器和比较器仍在工作,并产生中断或DMA。


7、输出比较模式


此功能用于控制输出波形,或指示已经过某一时间段。

在输出比较模式下,更新事件 UEV 对 OCxREF 和 OCx 输出毫无影响。同步的精度可以达到计数器的一个计数周期。输出比较模式也可用于输出单脉冲(在单

脉冲模式下)。

步骤:

1. 选择计数器时钟(内部、外部、预分频器)。

2. 在 TIMx_ARR 和 TIMx_CCRx 寄存器中写入所需数据。

3. 如果要生成中断请求,则需将 CCxIE 位置 1。

4. 选择输出模式。例如:

— 当 CNT 与 CCRx 匹配时,写入 OCxM = 011 以翻转 OCx 输出引脚

— 写入 OCxPE = 0 以禁止预装载寄存器

— 写入 CCxP = 0 以选择高电平有效极性

— 写入 CCxE = 1 以使能输出

5. 通过将 TIMx_CR1 寄存器中的 CEN 位置 1 来使能计数器。


8、PWM 模式

脉冲宽度调制模式可以生成一个信号,该信号频率由 TIMx_ARR 寄存器值决定,其占空比则由 TIMx_CCRx 寄存器值决定。有两种模式。


9、互补输出与死区插入

● 输出信号 OCx 与参考信号相同,只是其上升沿相对参考上升沿存在延迟。

● 输出信号 OCxN 与参考信号相反,并且其上升沿相对参考下降沿存在延迟。



10、单脉冲模式


关键字:STM32F407  高级定时器 引用地址:STM32F407 之 高级定时器功能描述

上一篇:STM32F103ZET6 之 ADC 采样率的确定
下一篇:STM32F407ZGT6之时钟系统介绍

推荐阅读最新更新时间:2024-03-16 15:38

stm32f407之基本定时器TIM6&TIM7(操作寄存器)
基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。 作为定时器的配置步骤: 1. 设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。 2. 使能相关时钟。 3. 设置分频。 4. 清空计数器的值。 5. 设置自动重装寄存器的值。 6. 是否允许中断。 7. 如果允许中断,设置中断优先级,使能中断。 8. 使能计数器。 程序: /**************************
[单片机]
stm32f407】时钟树以及SystemInit剖析
一. 时钟树 众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。 首先让我们来看看STM32F4的时钟系统图 在STM32F4中,有5个最重要的时钟源,为HSI
[单片机]
【<font color='red'>stm32f407</font>】时钟树以及SystemInit剖析
STM32F407的TCP编程出现客户端无法连接上服务器
单写一篇文章记录这些问题,因为有的问题实在是困扰了我太久太久了,终于解决了!!! 1.STM32F407的TCP编程,TCP_SERVER测试完全正常,TCP_CLIENT测试过程中,开发板作为客户端,出现客户端无法连接上服务器的问题 解决方法:这个问题不会出现在用路由器接入开发板和电脑的情况,只会出现在电脑和开发板用网线直连的情况,解决方法很简单,关闭电脑防火墙!!! 2.DHCP获取IP地址一致失败、获取超时等问题,只能使用静态IP地址 解决方法:DHCP,又名动态主机配置服务,它的作用是用来分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,但是分配IP地址这东西笔记本电脑
[单片机]
<font color='red'>STM32F407</font>的TCP编程出现客户端无法连接上服务器
stm32 高级定时器1配置注意
void TIM1_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //①时钟 TIM1 使能 //定时器 TIM1 初始化 TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置时钟频率除数的预分频值
[单片机]
stm32 <font color='red'>高级</font><font color='red'>定时器</font>1配置注意
使用STM32CubeMX创建STM32F407工程
创建项目 新建工程,选择对应的stm32f407芯片 设置相关引脚pin MiddleWares: 因为需要使用网络,选中LWIP。 Peripherals: 配置ETH使能,在右侧的引脚配图中相关引脚 配置RCC,使用外部晶振如图所示 配置SYS,配置系统时钟中断,使用ARM内部时钟 配置USART1,模式为异步,不使用硬件流控 在右边设置相关引脚: 时钟设置 LSE:外部低频时钟 HSE:外部高频时钟 LSI:内部低频时钟 HSI:内部高频时钟 由于需要配置168MHz系统时钟,只能使用PLL如图所示,(如果Pinout- RCC没有配置外部晶振,此处无法使用 HSE)
[单片机]
使用STM32CubeMX创建<font color='red'>STM32F407</font>工程
STM32F407的ADC之DMA多通道
这张主要是增加了一路PA2,也可以根据实际增加自己想要的路数。 与上面主要的区别: 1、设置PA2为模拟输入 2、修改通道数ADC_InitStructure.ADC_NbrOfConversion = 2;/*2通道 1*/ 3、增加ADC_RegularChannelConfig(ADC1,ADC_Channel_3,2,ADC_SampleTime_480Cycles);/*设置规则通道3 二个序列 采样时间 * DMA_InitStructure.DMA_BufferSize = 2;/*数据传输的数量为1*/ DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
[单片机]
STM32之TIM1高级定时器
定时器应用之PWM输出 1.1 TIM1_CH1N 与 TIM1_CH1 的区别 在刚准备使用定时器的时候,我看了下原理图,发现对于定时器1,它的每一个输出通道都是成对的,即TIM1_CH1N与TIM1_CH1两个一组,通过网络查询后,明白了芯片这样设计的原因。 TIM1是一个完整的电机控制用定时器外设,TIM1_CH1和TIM1_CH1N,用于驱动上下两个功率管。如果Deadtime为0,则 TIM1_CH1N是TIM1_CH1的反相,如果Deadtime不为0,则在TIM1_CH1N上插入了Deadtime,防止上下功率管同时导通。 另外的两类管脚定义: TIM1_ETR是外部触发输入管脚; TIM1_BKIN是故障信
[单片机]
STM32F407和STM32F051主从I2C通信方法
简介:本文章主要介绍STM32F407和STM32F051主从I2C通信方法。 M4作为主机: int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_I2C1_Init(); MX_USART1_UART_Init(); /* USER CODE BEG
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved