本文主要是介绍在STM32F407ZGT6中调用不同定时器,想多做几个定时器注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
操作中,发现,当写TIM2,3,4,5时,无论是初始化函数,或者中断执行函数时,都很顺畅。
但当写TIM6发现,有错误,undefined,当排查错误时,发现:
以下是译文:
通用定时器(TIMx)STM32F40x器件中嵌入了10个可同步的通用计时器(差异见表3)。Tim2, tim3, tim4, tim5STM32F40x包括4个全功能的通用定时器:TIM2。TIM5。TIM3。和TIM4。TIM2和TIM5计时器基于32位自动加载上/下计数器和16位预分频器。TIM3和TIM4计时器是基于16位自动加载上行/下行计数器和16位预分频器。它们都有4个独立的通道用于输入捕获/输出比较,PWM或单脉冲模式输出。这在最大的包上给出了多达16个输入捕获/输出比较/ pwm。TIM2。TIM3。TIM4、TIM5通用计时器可以一起工作,或者通过Timer Link特性与其他通用计时器和高级控制计时器TIM1和TIM8一起工作,以实现同步或事件链。这些通用计时器中的任何一个都可以用来产生PWM输出。TIM2。TIM3。TIM4。TIM5都有独立的DMA请求生成。它们能够处理正交(增量)编码器信号和数字输出从1到4霍尔效应传感器。TIM9。TIM10。TIM11 TIM12。TIM13, TIM14这些计时器基于一个16位自动加载上行计数器和一个16位预分频器。TIM10。TIM11。TIM13。TIM14有一个独立的通道,而TIM9和TIM12有两个独立的通道用于输入捕获/输出比较,PWM或单脉冲模式输出。它们可以与TIM2同步。TIM3。TIM4。TIM5功能齐全的通用定时器。它们也可以用作简单的时基基本定时器TIM6和TIM7这些定时器主要用于DAC触发和波形产生。它们还可以用作通用的16位时间基TIM6和TIM7支持独立的DMA请求生成。
因此我们不仅在中断函数名称中要注意,不是单纯的把4,5改成6就可以,还要注意在初始化中多少位自动加载和多少位预分频。
以上截图是由ctrl+f,并且在stm32f40xx.h文件中使用查找,找TIM7_IRQn(随便一个定时器都行,目的只是为了定位,找到定时器的中断函数名称位置而已)这个中断函数名,这时候我们发现之所以写TIM6出错,是因为中断函数名还有一个_DAC_。由芯片手册,我们也发现定时器6,7有点特殊,所以避开一下也好。
这篇关于在STM32F407ZGT6中调用不同定时器,想多做几个定时器注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!