ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【STM32】TIM定时器

2021-07-24 01:31:53  阅读:208  来源: 互联网

标签:定时器 HAL htim3 STM32 TIM Base 时钟


TIM定时器(TIM3为例)

        初始化:

        A:结构体TIM_HandleTypeDef的成员:

        1、*Instance:类型为TIM_TypeDef,即对TIM的寄存器的映射,通过这个成员可以操作寄存器

        2、Init:类型为TIM_Base_InitTypeDef,对定时器特性进行配置,成员有

                Prescaler:定时器分频

                CounterMode:向上计数、向下计数、中间对齐

                Period:周期

                ClockDivision:

                RepetitionCounter:

                AutoReloadPreload:自动重装

           故Tout=((Period+1)*(Prescaler+1))/Ft us:Ft步长,即TIM依赖的时钟频率

        3、Channel:类型为HAL_TIM_ActiveChannel,设置定时器通道

        4、*hdma[7]:DMA相关

        5、Lock:定时器锁,为HAL_LOCKHAL_UNLOCK一般和State搭配用

        6、State:定时器状态,常用HAL_TIM_STATE_BUSYHAL_TIM_STATE_READY

        上述参数配置后通过HAL_TIM_Base_Init(&htim3)传入完成配置

        B:结构体TIM_ClockConfigTypeDefTIM_MasterConfigTypeDef

        1、TIM_ClockConfigTypeDef是对TIM依赖的时钟进行配置,默认情况下TIM 挂在APB时钟上,若需要使用外部时钟,可对成员ClockSource进行配置

        2、TIM_MasterConfigTypeDef是当需要使用到定时器的级联时内部输出通道及SlaveMode的配置,默认都是否

        C:HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)

        1、使能TIM时钟,设置并使能中断NVIC

        2、如果有输出的话,配置对应GPIO输出

        启动并触发:

        启动:HAL_TIM_Base_Start_IT(&htim3):主函数中直接调用启动定时器或直接htim->State = HAL_TIM_STATE_READY

        触发:同样的有中断服务函数TIM3_IRQHandler(void),内调用公用的HAL_TIM_IRQHandler(&htim3)在这将htim3的参数传入

        回调:

        重写weak函数void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim),在Callback里判断定时器类型以及写需要执行的内容,实际上从这个Callback的命名可以看出,TIM有很多种Callback

标签:定时器,HAL,htim3,STM32,TIM,Base,时钟
来源: https://www.cnblogs.com/ZYQS/p/15054308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有