MindSDK应用基础:TIM模块样例详解与实践指南
eetrendMcu 2023-11-23

引言

MindSDK为MM32使用星辰处理器内核的系列微控制器,实现了一组TIM样例工程,MindSDK中的TIM模块对应硬件定时器TIM外设。本文通过讲解TIM模块的样例工程,介绍TIM模块的功能和用法。关于TIM模块对应的驱动程序,以及TIM外设模块硬件的实现细节,可具体查阅MindSDK工程的源文件,以及MM32微控制器(例如MM32F5270)的用户手册。

样例工程

MindSDK中为TIM驱动设计的样例工程包括:

  • tim_basic

  • tim_one_time_run

  • tim_output_compare_pwm

  • tim_input_capture

  • tim_external_trigger_input

  • tim_slave_mode

  • tim_slave_mode_encoder

  • tim_comp_output_compare_pwm

其中,tim_basic、tim_one_time_run、tim_output_compare_pwm、tim_input_capture和tim_external_trigger_input 分别演示了定时器最典型的功能,包括定时、输出比较、输入捕捉,以及对外部脉冲进行计数等。另外,还有一些不大典型,用在特殊应用场景的功能,例如,使用“从机”模式干预常规的定时器计数,通过硬件实现互补的PWM输出(常用于电机控制应用中控制驱动桥)。

tim_basic

tim_basic 描述了使用TIM模块最基本的方式,周期定时器。在样例工程中,通过 TIM_Init() 函数,配置一个选定的TIM外设模块的计数引擎,为连续计数模式 TIM_PeriodMode_Continuous ,并指定计数周期为  APP_TIM_UPDATE_PERIOD 。然后,启用选定TIM外设模块对应的NVIC中断。最后,通过调用 TIM_Start() 驱动函数,启动定时器开始计数。

每当定时器计数到达预设的计数周期值后,计数值折返为0,重新开始计数。同时,TIM会触发NVIC中断, tim_basic 样例工程中为TIM中断实现的服务程序中,实现了通过串口发送字符 * 的操作。

最终程序运行时,可以在PC机上的串口通信终端看到以指定周期输出的字符 * ,验证定时器中断被周期触发。

tim_one_time_run

tim_one_time_run 相对于 tim_basic 样例工程实现周期触发定时器中断服务,实现了每次启动定时器后,仅触发一次中断的用法。

其实现原理,是在 tim_basic 配置定时器周期运行的基础之上,修改初始化配置 .PeriodMode 的值为 TIM_PeriodMode_OneTimeRun。之后,每次通过 TIM_Start() 函数启动定时器后,定时器仅计数一个周期后,触发中断,然后停止计数。

实际运行程序时,用户在串口调试终端中每次输入任意字符,程序均会调用一次 TIM_Start() 函数,延时指定计数周期后,在定时器中断服务程序中打印字符 * 到串口终端界面。

tim_output_compare_pwm

tim_output_compare_pwm 实现的是一个通过输出比较功能产生PWM输出信号的样例工程。

其实现原理,是在 tim_basic 基础之上,额外通过驱动函数 TIM_EnableOutputCompare(),启动并配置给定通道 BOARD_TIM_CHANNEL 为输出比较功能。其中,指定通道的配置属性 .PinPolarity 的值为 TIM_PinPolarity_Rising,.RefOutMode 值为 TIM_OutputCompareRefOut_FallingEdgeOnMatch,设定同通道绑定的硬件引脚信号在计数初始的阶段为高电平,当计数值达到通道数据寄存器中设定的匹配值时,输出下降沿信号,输出低电平。

实际运行程序时,用户通过 TIM_Init() 函数配置定时器的基本定时单元,对应的计数周期即为输出PWM信号波形的周期,启用输出比较的指定通道绑定的引脚即为输出PWM信号的引脚,通过 TIM_PutChannelValue() 函数设定输出波形在整个周期下降沿的位置,进而调整PWM输出信号波形的占空比。通道引脚在每次定时器周期的开始输出为高电平,在周期内设定的匹配值的位置产生下降沿,转而输出低电平,再计数周期结束折返为0时,恢复为高电平。如此周而复始,实现输出PWM信号波形。

tim_input_capture

tim_intput_capture 实现的是一个使用定时器为外部输入的触发信号记录时刻的样例工程。

其实现原理,是在 tim_basic 基础之上,额外通过驱动函数 TIM_EnableInputCapture(),启动并配置给定通道 BOARD_TIM_CHANNEL 为输入捕获功能。其中,指定给定通道的捕获输入信号极性 .PinPolarity 的值为 TIM_PinPolarity_Falling,表示在该给定通道绑定的引脚上出现下降沿信号时,触发捕获事件。此时,捕获计数器当前的计数值到给定通道的通道数据寄存器中,这个值就可以作为该捕获事件的时刻记录。

实际运行程序时,用户通过 TIM_Init() 函数配置定时器的基本定时单元,此时定时器的计数周期,就是可能捕获时刻值的有效范围。然后在电路上使用一个按键接入到指定通道绑定的引脚上,模拟产生下降沿触发信号。当按下按键时,触发信号到来,触发程序中的通道事件中断服务程序,在其中可以通过 TIM_GetChannelValue() 函数读取本次输入捕获事件发生时的计数时刻。

tim_external_trigger_input

相对于 tim_basic 中,使用芯片内部的时钟源脉冲进行计数,tim_external_trigger_input 样例工程可以对用户指定引脚上的脉冲进行计数,计数的脉冲来自于芯片外部的信号源。

其实现原理,是在 tim_basic 基础上,额外通过驱动函数 TIM_EnableExtTriggerIn(),配置启用外部对外部输入的脉冲信号进行计数的功能,固定从TIM外设模块的  ETR 引脚捕获来自外部的脉冲信号。每次捕获到一个脉冲信号,等同于使用芯片内部时钟源的脉冲,计数器自增计数。此时,还可以基于这个新的时钟源,使用周期计数中断等功能。

实际运行程序时,用户可以将一个按键接入到指定TIM外设模块的 ETR 引脚上,用手动按按键产生脉冲信号。在程序中指定定时器的计数周期 APP_TIM_UPDATE_PERIOD 值为2,意味着每输入两次脉冲,就会触发一次定时器周期中断。

tim_slave_mode

tim_slave_mode 实现的是一个使用从机TIM从机模式的样例工程。实际上,这里的“从机”同从属关系的的“从”是没关系的,而是可以理解为更丰富的可由用户控制的工作模式。

tim_slave_mode 工程,在 tim_basic 基础上,额外通过驱动函数 TIM_EnableSlaveMode(),配置了其中一种“从机”模式:使用 ETR 作为控制信号(下降沿)的引脚 TIM_SlaveIn_Alt7,当控制信号到来时,选择暂停计数  TIM_SlaveResp_Alt5。

实际运行程序时,用户可以将一个按键接入到指定TIM外设模块的 ETR 引脚上,用手动按按键产生电平控制信号。当按下按键时,控制定时器暂停计数,松开按键时,定时器恢复计数。正常计数到一整个周期时,会产生中断。如此,当按下按键时,会影响定时器中断的周期。

tim_slave_mode_encoder

tim_slave_mode_encoder 工程基于 tim_input_capture 工程,通过额外调用 TIM_EnableSlaveMode() 并传入一组特定的配置,启用了一种特殊的“从机”模式,从而实现了编码器的功能。

tim_comp_output_compare_pwm

tim_comp_output_compare_pwm 基于tim_output_compare_pwm 工程,通过额外的驱动函数 TIM_EnableCompOutput(),实现了PWM信号的互补输出,这意味着当使用正常的输出比较通道输出PWM信号时,还开启了硬件设计的,使用对应的另一个通道,输出电平极性刚好相反的PWM信号。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 处理器
  • DSP
  • CPU
  • GPU
  • 解锁你的脑力之门:揭秘内存的秘密武器

    内存是电脑的重要组件之一,缺少内存,电脑将无法运行。凡是每天使用电脑的朋友,都在和内存打交道。但是,大家对于内存真的十分了解吗?为增进大家对内存的认识,本文将对内存的作用以及虚拟内存予以介绍。如果你...

    昨天
  • 单片机运算器了解吗

    单片机的使用,能够早就很多有意思的产品。通过单片机,我们能够造出一个独立的电子器件。为增进大家对单片机的认识,本文将对单片机的基本结构予以介绍。如果你对单片机具有浓厚兴趣,不妨和小编共同继续往下阅读...

    昨天
  • 什么是程控交换机?

    程控交换机,全称为存储程序控制交换机(与之对应的是布线逻辑控制交换机,简称布控交换机),也称为程控数字交换机或数字程控交换机。通常专指用于电话交换网的交换设备,它以计算机程序控制电话的接续。程控交换机...

    01-30
  • 什么是NAS与SAN?

    NAS是功能单一的精简型电脑,因此在架构上不像个人电脑那么复杂,像键盘、鼠标、荧幕、音效卡、喇叭、扩充漕、各式连接口等都不需要;在外观上就像家电产品,只需电源与简单的控制钮。NAS在架构上与个人电脑相似,但...

    01-30
  • 什么是DMA方式?

    DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数...

    01-30
  • 汽车车灯和雨刷器

    车灯和雨刷器(电器初级)

    01-29
  • p90灯珠和p70灯珠有什么区别

    p50, p90, p99(或者写作pct 50,pct90,pct 99)都是数据聚合统计一种方式,跟百分比相关(经评论区提醒,p的含义是percentile)。p50:数据集按升序排列,第50分位置大的数据(即升序排列后排在50%位置的数据)。p...

    01-23
  • 揭秘控制器的神秘面纱:从零开始掌控你的生活

    控制器的基本功能如下: 数据缓冲:由于I/O设备的速率较低而CPU和内存的速率却很高,故在控制器中必须设置一缓冲器。在输出时,用此缓冲器暂存由主机高速传来的数据,然后才以I/O设备所具有的速率将缓冲器中的数据...

    01-22
  • 电路分析基础

    01-22
  • 中断响应过程解密

    大多数中断系统都具有如下几方面的操作,这些操作是按照中断的执行先后次序排列的。 ①接收中断请求。 ②查看本级中断屏蔽位,若该位为1则本级中断源参加优先权排队。 ③中断优先权选择。 ④处理机执行完一...

    01-17
  • 中断优先级:揭秘计算机处理任务的秘密武器

    当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。 当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重...

    01-17
  • 单片机逻辑运算与移位指令:简洁指南

    在计算机技术中,“指令”是由指令集架构定义的单个的CPU操作。在更广泛的意义上,“指令”可以是任何可执行程序的元素的表述,例如字节码。一台计算机通常有几十条到几百条指令,按其所完成的功能可分为:算术逻辑运...

    01-17
下载排行榜
更多
评测报告
更多
广告