嵌入式原理与应用-基于STM32CubeIDE与HAL库 课件 项目5STM32通定时器_第1页
嵌入式原理与应用-基于STM32CubeIDE与HAL库 课件 项目5STM32通定时器_第2页
嵌入式原理与应用-基于STM32CubeIDE与HAL库 课件 项目5STM32通定时器_第3页
嵌入式原理与应用-基于STM32CubeIDE与HAL库 课件 项目5STM32通定时器_第4页
嵌入式原理与应用-基于STM32CubeIDE与HAL库 课件 项目5STM32通定时器_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式原理与应用集成电路学院

嵌入式课程组STM32通用定时器项目55.1STM32通用定时器概述01STM32定时器简介02通用定时器了解STM32定时器的种类和用法。掌握STM32通用定时器的计数模式。了解STM32通用定时器的内部结构和时钟选择。理解定时器初始化的计算公式。任务内容:任务要求:STM32定时器简介01STM32定时器简介定时器是STM32系列单片机中的重要组成部分之一,STM32系列单片机拥有多个系列和型号,不同系列和型号的单片机可能具有不同数量和类型的定时器。比如STM32F7系列单片机通常具有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM6、TIM7)。常用STM32单片机拥有定时器个数如下表。型号引脚个数最高时钟频率存储器容量通用定时器个数高级定时器个数基本定时器个数STM32F103C84872M64K310STM32F103RB6472M128K310STM32F103RC6472M256K232STM32F103V810072M64K310STM32F103VC10072M256K232STM32F103ZE14472M512K232STM32定时器简介三种定时器的区别定时器定时器位数计数模式产生DMA捕获/比较通道互补输出应用场景高级定时器(TIM1,TIM8)16向上、向下、中央对齐允许4有带死区控制盒紧急刹车,可应用于PWM电机控制通用定时器(TIM2,TIM3,TIM4,TIM5)16向上、向下、中央对齐允许4无通用。定时计数,PWM输出,输入捕获,输出比较基本定时器(TIM6,TIM7)16向上、向下、中央对齐允许0无主要应用于驱动DAC通用定时器02通用定时器一、通用定时器的功能、特点STM32的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器(CNT)构成。STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。通用定时器通用定时器TIMx具有4个独立通道(TIMx_CH1-TIMx_CH4),这些通道可以用于不同的功能,例如PWM输出、捕获输入、比较等。每个通道可以单独配置,并且可以同时执行不同的任务。通常情况下,通道的功能如下:TIMx_CH1:通道1,可以用于输出PWM波形,也可以用于输入捕获。TIMx_CH2:通道2,同样可以用于输出PWM波形或者输入捕获。TIMx_CH3:通道3,与前两个通道类似,可以用于PWM输出或输入捕获。

TIMx_CH4:通道4,具有相同的功能,可以用于PWM输出或输入捕获。通用定时器STM32单片机的通用定时器有6个独立的IRQ/DMA请求生成器事件,当发生以下事件时产生中断/DMA:

更新事件(UpdateEvent):计数器溢出并重新装载时产生更新事件。捕获/比较事件(Capture/CompareEvent):当捕获/比较寄存器(CCR)中的值与定时器

的计数器相匹配时产生捕获/比较事件。触发事件(TriggerEvent):当由定时器的输入触发信号(TRGI)引发的触发事件发生时产

生中断或DMA请求。捕获/比较中断(Capture/CompareInterrupt):当捕获/比较事件发生时产生中断。更新中断(UpdateInterrupt):当更新事件发生时产生中断。触发中断(TriggerInterrupt):当触发事件发生时产生中断。通用定时器STM32是由意法半导体(STMicroelectronics)推出的一系列32位ARMCortex-M单片机。STM32系列单片机具有丰富的外设和强大的性能。STM32系列单片机广泛应用于工业控制、汽车电子、消费类电子等领域。STM32系列微控制是嵌入式系统设计中的重要组成部分。通用定时器二、定时器的计数模式STM32单片机定时器的计数模式有向上计数、向下计数、中央对齐三种通用定时器三、定时器的内部结构STM32单片机的定时器通常由以下主要部分组成:计数器(Counter)预分频器(Prescaler)自动重装载寄存器(Auto-reloadRegister)输出比较寄存器(OutputCompareRegister)PWM模式控制寄存器(PWMModeControlRegister)时钟选择和使能控制寄存器(ClockSelectionandEnableControlRegister)通用定时器四、定时器的时钟选择STM32定时器的计数器时钟可以由下列四种时钟源提供:内部时钟(CK_INT)外部时钟模式1:外部输入脚(TIx)外部时钟模式2:外部触发输入(ETR)

内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以

配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。通用定时器五、定时器的相关寄存器当使用STM32单片机中的定时器时,常常涉及到三个关键的寄存器:计数器寄存器(TIMx_CNT):预分频器寄存器(TIMx_PSC):自动装载寄存器(TIMx_ARR):这些寄存器共同作用于定时器的计数过程,通过配置合适的计数器值、预分频系数和自动装载值,可以实现各种定时和计数功能,满足不同应用场景的需求。通用定时器六、定时器初始化的计算公式APB1Timerclocks和APB2Timerclocks脉冲需要经过一个定时器专属的预分频器再分频之后才能成为定时器的计数脉冲,预分频系数保存在一个16位的寄存器TIMx_PSC之中,此时TIMx的计数脉冲周期TCNT和APB1Timerclocks及APB2Timerclocks频率fCLK之间的关系是:STM32的定时器都是16位定时器,计数范围为0~65535,使用时可以根据实际需要设定定时器的自动重载寄存器TIMx_ARR。此时TIMx采用向上计数模式的一次溢出时间TOUT计算公式是:5.2STM32定时器应用01EXIT控制电路设计03定时器控制数码管代码设计02STM32CubeMX配置TIMx掌握EXIT控制电路设计。能利用STM32CubeMX配置TIMx。学会定时器控制数码管代码编写。任务内容:任务要求:EXIT控制电路设计01EXIT控制电路设计编程实现图中的数码管从10~0开始倒计时,按键作为外部中断,控制数码管计时的启停。要求:设置定时器定时时间为1S,定时器控制数码管实现10S倒计时,KEY1控制定时器启动、停止。打开Proteus新建工程,并按图所示绘制仿真电路,按键连接PA0,上拉按键。PB0-PB15连接两个共阴数码管,用来显示10S倒计时。STM32CubeMX配置TIMx02STM32CubeMX配置TIMx打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程,用STM32CubeMX工具配置定时器,打开“Pinout&Configuration”页面,在左侧菜单中找到“Timers”,选择“TIM4”,在右侧的“TIM4ModeandConfiguration”中勾选内部时钟为信号源。STM32CubeMX配置TIMx实现1S定时,PSC=7199,ARR=9999。勾选内部时钟源会弹出“Configuration”设置,进行下图所示配置。STM32CubeMX配置TIMx在中断管理设置中选择2位抢占优先级和2两位响应优先级,并勾选外部中断0“EXTIline0”和定时器“TIM4”的中断使能,并如图所示设置两个中断的抢占优先级和响应优先级。定时器控制数码管代码设计03定时器控制数码管代码设计STM32CubeMX创建工程文件时,会根据外部中断的配置在“Src”文件夹下的“stm32f1xx_it.c”文件中为引脚PA0和TIM4生成外部中断0和定时器4的中断服务函数“voidEXTI0_IRQHandler(void)”和“voidEXTI1_IRQHandler(void)”,当触发外部中断时或定时器溢出时会自动进入到对应的中断服务函数中。定时器控制数码管代码设计HAL库为每个中断都编写了中断处理函数,进入中断服务函数后会执行对应的中断处理函数,如定时器4的处理函数“HAL_TIM_IRQHandler(&htim4);”HAL库的中断处理函数比较复杂,服务函数中提供了多种中断处理,下表列出了通用定时器的几种中断事件。中断事件解释Capturecompare1~4event定时器的捕获比较通道1~4事件,它可以用于测量定时器计数器的值与捕获寄存器(TIMx_CCRx)的值之间的时间间隔,或者用于产生输出比较信号。Outputcompareevent定时器的输出比较事件,它允许在定时器计数器的值与捕获/比较寄存器(TIMx_CCRx)中设置的比较值相等时,触发特定的操作或者中断处理程序。TIMUpdateevent定时器更新事件,当定时器的计数器溢出并重新加载时,就会触发更新事件。定时器控制数码管代码设计项目中断回调函数代码5.3实战演练-PWM呼吸灯设计01电路设计03编写代码02PWM掌握通过STM32CubeMX初始化PWM的流程。掌握通用定时器实现PWM的代码设计方法。理解呼吸灯的工作原理。任务内容:任务要求:电路设计01电路设计在Proteus中新建基于STM32F103C8的工程,在Proteus左侧模式中找到“虚拟仪器模式”并且找到示波器“OSCILLOSCOPE”,绘制仿真电路图,如图所示,PA6连接LED与示波器。PWM02PWMPWM(脉冲宽度调制)是一种常用的调制技术,用于在数字系统中生成模拟信号。它通过调节信号的脉冲宽度来控制信号的平均功率,通常用于控制电机速度、LED亮度调节、音频合成等应用中。1.基本原理PWM的基本原理是通过在一个固定的周期内改变信号的占空比来控制输出的平均电压或功率。PWM信号由一个周期性的脉冲序列组成,其中脉冲的宽度(高电平持续时间)决定了输出信号的平均功率或电压。PWM2.PWM参数周期(Period):PWM信号的一个完整周期的持续时间,通常以时间单位表示,如微秒(μs)或毫秒(ms)。占空比(DutyCycle):高电平脉冲的持续时间与一个周期的比例,通常以百分比表示。频率(Frequency):PWM信号的周期性重复率,通常以赫兹(Hz)表示,是周期的倒数。分辨率(Resolution):PWM信号的精度,通常表示为脉冲宽度可调节的级别数目。PWM3.应用领域电机控制:用于调节电机速度和方向。LED亮度调节:通过改变LED灯的亮度来实现光线调节。音频合成:用于生成模拟音频信号,如音乐合成和语音合成。电源控制:用于调节开关电源的输出电压和电流。PWM4.优点和应用高效性:PWM技术能够以较高的效率控制输出功率,因为它不像线性调节器那样将多余的功率转化为热量。灵活性:可以通过调节占空比和周期等参数,灵活地控制输出信号的特性。5.PWM在STM32中的应用STM32系列微控制器具有丰富的定时器模块和PWM输出通道,可以方便地生成和控制PWM信号。通过STM32的HAL库或底层驱动程序,可以轻松配置和控制PWM输出。编写代码03编写代码一、初始化PWM打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程,打开STM32CubeMX选择芯片的PA6引脚,在弹出的GPIO功能选择对话框中选择“TIM3_CH1”。编写代码PA6在本任务中作为定时器“TIM3”的通道1“CH1”,编程通过“TIM3_CH1”输出PWM脉冲信号,控制LED实现呼吸灯效果。通过“TIM3ModeandConfiguration”选择内部时钟,在通道1选择“PWMGenerationCH1”。编写代码PWM参数设置,首先设定定时器的预分配系数PSC和自动重装值ARR分别为“72-1”和“1000-1”,实现定时器1ms的定时。在PWM模式中选择“PWMmode1”在输出极性选择“LOW”。“Mode”选项:PWM模式①PWMmode1:CNT<CCRx时,输出有效电平;当CNT>CCRx时,输出无效电平②PWMmode2:CNT<CCRx时,输出无效电平;当CNT>CCRx时,输出有效电平“CHPolarity”:有效电平①low:通道极性为低电平,也可以说是有效电平为低电平,此时高电平就是无效电平②high:通道极性为高电平,也可以说是有效电平为高电平,此时低电平就是无效电平编写代码将“Mode”选择“PWMmode1”,“CHPolarity”选择low时,当定时器的计数值小于PWM比较值即CNT<CCRx时,输出有效电平,而有效电平为低电平;当CNT>CCRx时,输出无效电平,高电平就是无效电平,就会产生如图所示的电平逻辑。编写代码二、编写代码按要求在STM32CubeMX中完成PWM及时钟配置后,点击“Project”菜单的“GenerateCode”生成代码,会在STM32CubeIDE自动创建工程文件,在“main.c”文件开始编写代码。查询方法实现PWM中断方式实现PWM完整代码见教材编写代码仿真结果5.4实战演练-电子秒表设计01电路设计02编写代码掌握单片机的定时器模块相关知识。掌握中断按键的硬件设计和代码设计方法。任务内容:任务要求:电路设计01电路设计电子秒表是一种常见的计时器设备,本项目设计一个基于STM32单片机和数码管的电子秒表,用于准确测量时间。电子秒表由四位数码管显示,秒表时间范围0~99.99秒。在Proteus中新建基于STM32F103C8的工程,绘制仿真电路图,如图所示,四个共阴动态显示数码管通过两个锁存器连接到STM32F103C8单片机的PB0~PB9接口,数码管从左到右分别显示秒的十位,秒的个位,十分之一秒和百分之一秒。按键“KEY”经过上拉电阻连接PB10。通过外部中断触发实现按键第一次按下控制秒表启动,第二次按下秒表停止,第三次按下秒表复位功能,并反复循环。编写代码02编写代码打开STM32Cube

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论