0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MindSDK应用基础——TIM模块样例

jf_pJlTbmA9 来源:灵动MM32MCU 作者:灵动MM32MCU 2023-10-25 16:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言

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信号。

来源:灵动MM32MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Tim
    Tim
    +关注

    关注

    0

    文章

    85

    浏览量

    19120
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1111

    浏览量

    52003
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨RL78/F22 MCU基于IAR开发环境创建触摸应用工程

      目录 01 概述 02 瑞萨RL78/F22 Target Board简介 03 基于IAR创建触摸应用工程 –在IAR中创建新工程 –在Smart Configurator中为工程添加
    的头像 发表于 01-19 09:33 6749次阅读
    瑞萨RL78/F22 MCU基于IAR开发环境创建触摸应用<b class='flag-5'>样</b><b class='flag-5'>例</b>工程

    瑞萨RL78/F22 MCU基于e2studio开发环境创建触摸应用工程

    瑞萨RL78/F22 MCU基于e2studio开发环境创建触摸应用工程
    的头像 发表于 01-14 15:31 7988次阅读
    瑞萨RL78/F22 MCU基于e2studio开发环境创建触摸应用<b class='flag-5'>样</b><b class='flag-5'>例</b>工程

    LAT1202+TIM DMA burst 输出变频 PWM 波形应用笔记

    4/TIM5 以及 TIM15/TIM16/TIM17。TIM 模块中,可通过修改 ARR 寄存
    发表于 01-11 17:22 0次下载

    瑞萨RL78/F25 MCU基于IAR开发环境创建触摸应用工程

    瑞萨RL78/F25 MCU基于IAR开发环境创建触摸应用工程
    的头像 发表于 01-05 14:59 8972次阅读
    瑞萨RL78/F25 MCU基于IAR开发环境创建触摸应用<b class='flag-5'>样</b><b class='flag-5'>例</b>工程

    基于开源鸿蒙的图片编辑开发(2)

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑的全流程,分为上篇和下篇,本篇为下篇,主要介绍标记、保存图片功能。
    的头像 发表于 10-31 09:19 3362次阅读
    基于开源鸿蒙的图片编辑开发<b class='flag-5'>样</b><b class='flag-5'>例</b>(2)

    基于开源鸿蒙的图片编辑开发(1)

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑的全流程,分为上篇和下篇,本篇为上篇,主要介绍添加相册图片、编译图片功能。
    的头像 发表于 10-31 09:16 3215次阅读
    基于开源鸿蒙的图片编辑开发<b class='flag-5'>样</b><b class='flag-5'>例</b>(1)

    如何让大模型生成你想要的测试用

    应用大模型生成测试用,常见的知识库,测试大模型,微调,RAG等技术门槛都不低,甚至很难,因此对于应用者而言,最快的方式就是应用好提示词,调教属于个人风格的测试用智能生成模块,让智能模板像人一
    的头像 发表于 09-26 10:01 1120次阅读
    如何让大模型生成你想要的测试用<b class='flag-5'>例</b>?

    基于开源鸿蒙的AVPlayer视频播控开发

    在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发基于AVPlayer实现,AvPlayer支持流媒体和本地资源解析、媒体资源解封装、视频解码和渲染功能,适用于对媒体资源进行端
    的头像 发表于 08-21 10:22 3173次阅读
    基于开源鸿蒙的AVPlayer视频播控开发<b class='flag-5'>样</b><b class='flag-5'>例</b>

    基于 AS32X601 微控制器的定时器模块TIM)技术研究与应用实践

    摘要: 本文全面介绍了国科安芯推出的AS32X601系列微控制器的定时器模块TIM),包括其系统架构、功能特性、应用场景以及工程实践要点。通过对芯片的详细分析,揭示了其高性能运行的基础。本文详细
    的头像 发表于 08-19 16:44 1011次阅读

    基于开源鸿蒙的视频播放开发

    在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发针对视频播放场景,聚焦开源鸿蒙原生媒体框架,通过Video组件实现视频资源加载、播放状态控制及多样化展示形态。重点演示组件化
    的头像 发表于 08-19 10:41 1788次阅读
    基于开源鸿蒙的视频播放开发<b class='flag-5'>样</b><b class='flag-5'>例</b>

    第二十二章 TIM——高级定时器

    本章介绍了W55MH32的高级定时器(TIM1和TIM8),其含时基单元等,具备输入捕获、输出比较、PWM生成等功能,还支持互补输出、死区插入等,适用于工业电机控制,也提及相关配置结构体。
    的头像 发表于 06-20 13:58 1857次阅读
    第二十二章 <b class='flag-5'>TIM</b>——高级定时器

    第二十一章 TIM——通用定时器

    本篇文章介绍了W55MH32的通用定时器(TIM2~TIM5等),其由16位自动装载计数器和可编程预分频器构成,具备输入捕获、输出比较、PWM生成等功能,还介绍了时基单元、计数器模式等,并有代码解析与下载验证内容。
    的头像 发表于 06-20 13:57 1736次阅读
    第二十一章 <b class='flag-5'>TIM</b>——通用定时器

    第二十章 TIM——基本定时器

    本章介绍了W55H32基本定时器TIM6、TIM7,16位向上计数,含时钟源、预分频器等,讲解定时计算及初始化结构体。
    的头像 发表于 06-20 13:51 1332次阅读
    第二十章 <b class='flag-5'>TIM</b>——基本定时器

    基于瑞萨电子RA8T2 sensorless方案的工程 可对电流环进行TCM化设置

    基于瑞萨电子RA8T2 sensorless方案的工程 可对电流环进行TCM化设置
    的头像 发表于 06-04 18:29 1245次阅读

    一文读懂热界面材料:TIM1与TIM2的奇妙世界

    TIM1:芯片的“贴身保镖”2025ThermalLink在热界面材料的世界里,TIM1堪称芯片的“贴身保镖”。它通常紧紧地贴附在芯片(如CPU、GPU等核心芯片)与均热板(IHS)之间,就像给芯片
    的头像 发表于 05-11 06:41 3277次阅读
    一文读懂热界面材料:<b class='flag-5'>TIM</b>1与<b class='flag-5'>TIM</b>2的奇妙世界