《CH03-04-STM32F40x的定时器模块原理.pptx》由会员分享,可在线阅读,更多相关《CH03-04-STM32F40x的定时器模块原理.pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统原理与开发设计主讲人:赖树明东莞理工学院STM32F40 x的定时器模块原理01基本定时器框架分析02基本定时器寄存器03基本定时器示例0101基本定时器框架分析定时器的分类定时器的特征基本定时器结构框图基本定时器框架分析 定时器的分类01基本定时器TIM6、TIM7,它们只有基本的定时功能;ACB通用定时器TIM2、TIM3、TIM4、TIM5、TIM9、TIM10、TIM11、TIM12、TIM13、TIM14,它们除包含基本定时器所有功能外,还有输入捕获、输出比较、PWM捕获、PWM输出、霍尔传感器等功能;高级定时器TIM1、TIM8,它们除包含通用定时器所有功能外,还有死区、
2、互补输出功能。定时器 分类基本定时器框架分析 定时器的特征01是一个16位自动重载递增计数器;有一个16位可编程预分频器,用于对计数器时钟频率进行分频,可在运行时修改,分频系数介于165536之间;可用于触发DAC的同步电路,计数器上溢发生更新事件可以产生中断或DMA请求。定时器特征基本定时器框架分析 基本定时器结构框图01STM43F407默认时钟的CK_INT时钟频率是84MHz,CK_INT时钟驱动信号经过控制器输出给CK_PSC作为输入给PSC预分频器,分频后得到CK_CNT频率,最后由CK_INT驱动CNT计数器进行递增计数。当CNT计数器递增到的值等于自动重载寄存器中的值时,表示定
3、时时间到了,这时会触发更新事件,如果使能更新中断,还会同步产生更新中断,开发者可以编写中断服务程序来根据控制定时时间到需要执行的代码。基本定时器框架分析 定时器的分类01基本定时器TIM6、TIM7,它们只有基本的定时功能;ACB通用定时器TIM2、TIM3、TIM4、TIM5、TIM9、TIM10、TIM11、TIM12、TIM13、TIM14,它们除包含基本定时器所有功能外,还有输入捕获、输出比较、PWM捕获、PWM输出、霍尔传感器等功能;高级定时器TIM1、TIM8,它们除包含通用定时器所有功能外,还有死区、互补输出功能。定时器 分类0202基本定时器寄存器uu控制寄存器控制寄存器1(T
4、IMx_CR1)1(TIMx_CR1)位7ARPE:自动重载预装载使能;0:TIMx_ARR寄存器不进行缓冲。1:TIMx_ARR寄存器进行缓冲。位3OPM:单脉冲模式0:计数器在发生更新事件时不会停止计数 1:计数器在发生下一更新事件时停止计数(将CEN位清零)。位2URS:更新请求源,此位由软件置1和清零,用以选择UEV事件源。0:使能时,所有事件都会生成更新中断或DMA请求。1:使能时,只有计数器上溢/下溢才会生成更新中断或DMA请求。位1UDIS:更新禁止,此位由软件置1和清零,用以使能/禁止UEV事件生成,通常是使能的。0:使能UEV,计数器上溢/下溢、将UG位置1、从模式控制器生成
5、的更新事件都产生UEV事件,然后更新影子寄存器的值。1:禁止UEV,不会生成更新事件,各影子寄存器的值(ARR和PSC)保持不变。但如果将UG位置1,或者从模式控制器接收。到硬件复位,则会重新初始化计数器和预分频器。位0CEN:计数器使能 0:禁止计数器;1:使能计数器STM32F4基本定时器寄存器分析02uuTIM6TIM6和和TIM7 DMA/TIM7 DMA/中断使能寄存器中断使能寄存器(TIMx_DIER)(TIMx_DIER)当使用中断方式来识别定时器中定时时间已经到达时候,则需要使能UIE位,设置为。位8UDE:更新DMA请求使能,当定时器需要和DMA模块结合使用时候才需要配置该位
6、0:禁止更新DMA请求。1:使能更新DMA请求。位0UIE:更新中断使能0:禁止更新中断。1:使能更新中断。STM32F4基本定时器寄存器分析02uuTIM6TIM6和和TIM7TIM7状态寄存器状态寄存器(TIMx_SR)(TIMx_SR)对于基本定时器该寄存器只有一位有效,通用定时器和高级定时器还有很状态指标标志,本节学习基本定时器的功能,因此只需要关注第0位即可。位0UIF:更新中断标志,该位在发生更新事件时通过硬件置1。但需要通过软件清零。0:未发生更新。1:更新中断挂起。发生以下情况由硬件置1:上溢或下溢并且当TIMx_CR1寄存器中UDIS=0时。当由于TIMx_CR1寄存器中UR
7、S=0且UDIS=0而通过软件使用TIMx_EGR寄存器中的UG位重新初始化CNT时。STM32F4基本定时器寄存器分析02uuTIM6TIM6和和TIM7TIM7事件生成寄存器事件生成寄存器(TIMx_EGR)(TIMx_EGR)该寄存器用于手动产生一个更新事件,一般在使能了预装载功能时。对于基本定时器,该寄存器只有一个位有效,通用定时器和高级定时器还有其他位,本节学习基本定时器的功能,因此只需要关注第0位即可。位0UG:更新事件产生,该位可通过软件置1,并由硬件自动清零。0:不执行任何操作。1:重新初始化定时器计数器并生成寄存器更新事件。STM32F4基本定时器寄存器分析02uuTIM6T
8、IM6和和TIM7TIM7计数器计数器(TIMx_CNT)(TIMx_CNT)该寄存器即为定时器的计数器,当定时器启动后,这个寄存器数值会一直递增,当值增加到和自动重载寄存器值相同时,则表示定时时间到。位15:0CNT15:0:计数器值STM32F4基本定时器寄存器分析02uuTIM6TIM6和和TIM7TIM7预分频器预分频器(TIMx_PSC)(TIMx_PSC)该寄存器用来设置对原始计数时钟的分频系数,即把一个比较高速的计数时钟进行分频,得到一个较低频率的计数时钟。位15:0PSC15:0:预分频器值计数器时钟频率CK_CNT等于fCK_PSC/(PSC15:0+1)。PSC包含在每次发
9、生更新事件时要装载到实际预分频器寄存器的值。该位会自动加1,设置预分频时需要减1;例如:16分频;只需要写入15即可。STM32F4基本定时器寄存器分析02uuTIM6TIM6和和TIM7TIM7自动重载寄存器自动重载寄存器(TIMx_ARR)(TIMx_ARR)该寄存器存放用户定时时间对应的计数值位15:0ARR15:0:自动重载值注意:自动重载需要写10000,真实写入的值只能是9999。从图3.20可以看出,由于0也算一个计数值,所以重载值需要比原来的值减1。STM32F4基本定时器寄存器分析020303基本定时器定时示例实验示例硬件原理图实验示例软件分析实验示例编程实现基本定时器定时示
10、例实验示例硬件原理图03LED硬件原理图分析可知道:1.使用PG口的第13,14这两个引脚,2.输出高电平时LED灭,低电平时LED亮;3.配置PG13,PG14来通用推挽输出。原理图分析原理图说明本实验采用基本定时器进行定时,在定时器中断服务程序中的对LED灯进行操作,因此,这里先对LED灯进行原理图进行分析,如后边所示软件设计概述1.初始化LED 使用的GPIO口为推挽输出。2.基本定时器默认工程提供的计数时钟频率是 84M,根据定时时间计算预分频值和对应的计数次数3.初始化定时器相关寄存器:4.编写定时器中断服务程序,在中断服务程序中修改LED灯状态设计思路1.初始化LED所在的GPIO
11、引脚:请参考前面GPIO 控制LED章节;2.初始化定时器:开TIM6的外设模块时钟;清零CNT寄存器计数值;配置CR1寄存器;禁用单脉冲模式;使能配置更新请求;配置预分频器(TIMx_PSC),配置自动重载寄存器(TIMx_ARR),配置NVIC中断:中断分组选择,编码优先级,写入优先级到寄存器,使能优先级3.配置NVIC中断和 配置定时器中断使能寄存器(TIMx_DIER),使能其中的UIE位编写对应的中断服务程序:4.编写定时器中断服务程序:void TIM6_DAC_IRQHandler(void).03基本定时器定时示例定时示例软件分析定时器初始化void timer_6_init(
12、void)uint32_t pri;RCC-APB1ENR|=1 CNT=0;/清空计数器TIM6-PSC=8400-1;/设置预分频,/设置定时时长,当上面8400分频后,计数10K,则计数10000为1秒钟TIM6-ARR=10000-1;/1秒钟定时间对应计数值/设置定时器:使能自动重载寄存器影子功能,计数器上溢/下溢生成更新中断TIM6-CR1 =17|1 DIER|=1 CR1|=1 SR&(1 SR&=(1 ODR&1 BSRRH=1 BSRRL=1 ODR&1 BSRRH=1 BSRRL=1 APB2ENR|=1 EXTICR0&=(0 x0F FTSR|=1 RTSR|=1 IMR|=1 PR|=1 0;/EXTI 中断挂起位,写1,清零。/以下是你自由写的代码led1_reverse();/取反LED1灯状态,你自己写的led控制函数 05STM32F40 x按键中断示例按键中断硬件分析07致谢ACKNOWLEDGEMENTS感谢聆听,如有不足之 处敬请指出,欢迎提出您的宝贵建议!致谢