硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3227|回复: 4
收起左侧

[HAL学习笔记] HAL库的HRTIM源文件stm32h7xx_hal_hrtim.c学习笔记(2020-01-21 V1.0)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106688
QQ
发表于 2020-1-21 11:55:29 | 显示全部楼层 |阅读模式
1、HRTIM的API主要分为两类,Simple mode和waveform mode
(1)Simple mode
与通用定时器的相同,只是分辨率更高,支持的模式如下:
a、输出比较模式
b、PWM输出模式
c、输入捕获模式
d、单脉冲模式

函数以HAL_HRTIM_Simple开头。

(2)Waveform mode
这个模式下的API可以充分发挥HRTIM的所有特性。
所有功能都可以使用,而且没有任何限制。

函数以HAL_HRTIM_Waveform开头。

2、HRTIM的底层初始化是通过函数HAL_HRTIM_MspInit实现
(1)函数__HRTIMx_CLK_ENABLE()使能时钟
(2)初始化使用了的IO引脚,__HAL_RCC_GPIOx_CLK_ENABLE和HAL_GPIO_Init
(3)使用DMA方式控制数据传输,比如HAL_HRTIM_SimpleBaseStart_DMA
    a、使能DMA接口时钟__DMAx_CLK_ENABLE
    b、初始化DMA句柄
    c、调用函数__HAL_LINKDMA关联DMA和HRTIM句柄。
    d、调用函数HAL_DMA_Init初始化DMA
    e、HAL_NVIC_SetPriority配置DMA优先级,HAL_NVIC_EnableIRQ使能DMA中断
(4)使用中断方式控制数据传输,比如HAL_HRTIM_SimpleBaseStart_IT
         HAL_NVIC_SetPriority配置DMA优先级,HAL_NVIC_EnableIRQ使能DMA中断

3、初始化HRTIM使用函数HAL_HRTIM_Init。此函数除了配置HRTIM句柄的接头成员,还包括外部同步配置,HRTIM既可以作为master发出同步信号,也可以作为slave,等待接收同步信号。

4、配置HRTIM
(1)Burst Mode Controller:
HAL_HRTIM_BurstModeConfig突发模式配置

(2)External Events Conditioning
HAL_HRTIM_EventConfig 配置外部事件条件
HAL_HRTIM_EventPrescalerConfig 配置外部事件采样时钟

(3)Fault Conditioning
HAL_HRTIM_FaultConfig 配置异常通道
HAL_HRTIM_FaultPrescalerConfig 预分频配置
HAL_HRTIM_FaultModeCtl 使能或者禁止输入电路

(4)ADC trigger
HAL_HRTIM_ADCTriggerConfig 配置触发ADC

5、配置HRTIM时基
使用函数HAL_HRTIM_TimeBaseConfig配置定时器时间基准,不管用于Simple Mode还是Waveform Mode,都必须调用这个函数进行配置。
(1)HRTIM定时器计数操作模式
(2)HRTIM定时器时钟分频
(3)HRTIM定时器周期。
(4)HRTIM重复计数器。

6、HRTIM工作在Simple Mode
(1)时间基准模式:
HAL_HRTIM_SimpleBaseStart(),HAL_HRTIM_SimpleBaseStop(),
HAL_HRTIM_SimpleBaseStart_IT(),HAL_HRTIM_SimpleBaseStop_IT(),
HAL_HRTIM_SimpleBaseStart_DMA(),HAL_HRTIM_SimpleBaseStop_DMA()

(2)输出比较:
HAL_HRTIM_SimpleOCChannelConfig(),
HAL_HRTIM_SimpleOCStart(),HAL_HRTIM_SimpleOCStop(),
HAL_HRTIM_SimpleOCStart_IT(),HAL_HRTIM_SimpleOCStop_IT(),
HAL_HRTIM_SimpleOCStart_DMA(),HAL_HRTIM_SimpleOCStop_DMA(),

(3)PWM输出:
HAL_HRTIM_SimplePWMChannelConfig(),
HAL_HRTIM_SimplePWMStart(),HAL_HRTIM_SimplePWMStop(),
HAL_HRTIM_SimplePWMStart_IT(),HAL_HRTIM_SimplePWMStop_IT(),
HAL_HRTIM_SimplePWMStart_DMA(),HAL_HRTIM_SimplePWMStop_DMA()

(4)输入捕获
HAL_HRTIM_SimpleCaptureChannelConfig(),
HAL_HRTIM_SimpleCaptureStart(),HAL_HRTIM_SimpleCaptureStop(),
HAL_HRTIM_SimpleCaptureStart_IT(),HAL_HRTIM_SimpleCaptureStop_IT()

(5)单脉冲模式:
HAL_HRTIM_SimpleOnePulseChannelConfig(),
HAL_HRTIM_SimpleOnePulseStart(),HAL_HRTIM_SimpleOnePulseStop(),
HAL_HRTIM_SimpleOnePulseStart_IT(),HAL_HRTIM_SimpleOnePulseStop_It()

7、HRTIM工作在waveform模式
(1)HAL_HRTIM_WaveformTimerConfig使能HRTIM中断和DMA请求
使能HRTIM的HALF Mode
定义HRTIM如何响应外部同步输入
使能HRTIM的推挽模式
使能HRTIM的异常通道
使能dead-time插入
设置HRTIM的延迟保护
设置HRTIM的更新和复位触发
设置HRTIM寄存器的更新策略
(2)HAL_HRTIM_TimerEventFilteringConfig
配置外部事件消隐和开窗电路。
Blanking:在规定的时间内屏蔽外部事件。
Windowing:只能在规定的时间内使能外部事件。
(3)HAL_HRTIM_DeadTimeConfig
配置HRTIM的死区插入,用于配置互补信号
(4)HAL_HRTIM_ChopperModeConfig
用于配置在定时之上添加的高频载波信号输出,HRTIM的每个输出都可以单独使能或者禁止 Chopper。
(5)HAL_HRTIM_BurstDMAConfig
配置HRTIM的DMA突发模式。
(6)HAL_HRTIM_WaveformCompareConfig
配置HRTIM的比较单元
(7)HAL_HRTIM_WaveformCaptureConfig
配置HRTIM的捕获单元
(8)HAL_HRTIM_WaveformOutputConfig
配置HRTIM输出。
(9)HAL_HRTIM_WaveformSetOutputLevel
配置激活或者非激活态。
(10) 使能或者禁止waveform timer输出
HAL_HRTIM_WaveformOutputStart(),HAL_HRTIM_WaveformOutputStop().
(11)启动或者禁止HRTIM
HAL_HRTIM_WaveformCountStart(), HAL_HRTIM_WaveformCountStop(),
HAL_HRTIM_WaveformCountStart_IT(), HAL_HRTIM_WaveformCountStop_IT(),
HAL_HRTIM_WaveformCountStart_DMA(), HAL_HRTIM_WaveformCountStop_DMA(),
(11) 突发模式控制器使能:
HAL_HRTIM_BurstModeCtl()
(12) 软件触发 :
HAL_HRTIM_BurstModeSoftwareTrigger()
HAL_HRTIM_SoftwareCapture()
HAL_HRTIM_SoftwareUpdate()
HAL_HRTIM_SoftwareReset()


8、动态注册回调

使能宏定义USE_HAL_HRTIM_REGISTER_CALLBACKS

函数HAL_HRTIM_RegisterCallback() 允许注册的回调如下:
(+) Fault1Callback               : Fault 1 interrupt callback function
(+) Fault2Callback               : Fault 2 interrupt callback function
(+) Fault3Callback               : Fault 3 interrupt callback function
(+) Fault4Callback               : Fault 4 interrupt callback function
(+) Fault5Callback               : Fault 5 interrupt callback function
(+) SystemFaultCallback          : System fault interrupt callback function
(+) BurstModePeriodCallback      : Burst mode period interrupt callback function
(+) SynchronizationEventCallback : Sync Input interrupt callback function
(+) ErrorCallback                : DMA error callback function
(+) MspInitCallback              : HRTIM MspInit callback function
(+) MspDeInitCallback            : HRTIM MspInit callback function

函数HAL_HRTIM_TIMxRegisterCallback允许注册的回调函数如下:
(+) RegistersUpdateCallback   : Timer x Update interrupt callback function
(+) RepetitionEventCallback   : Timer x Repetition interrupt callback function
(+) Compare1EventCallback     : Timer x Compare 1 match interrupt callback function
(+) Compare2EventCallback     : Timer x Compare 2 match interrupt callback function
(+) Compare3EventCallback     : Timer x Compare 3 match interrupt callback function
(+) Compare4EventCallback     : Timer x Compare 4 match interrupt callback function
(+) Capture1EventCallback     : Timer x Capture 1 interrupts callback function
(+) Capture2EventCallback     : Timer x Capture 2 interrupts callback function
(+) DelayedProtectionCallback : Timer x Delayed protection interrupt callback function
(+) CounterResetCallback      : Timer x counter reset/roll-over interrupt callback function
(+) Output1SetCallback        : Timer x output 1 set interrupt callback function
(+) Output1ResetCallback      : Timer x output 1 reset interrupt callback function
(+) Output2SetCallback        : Timer x output 2 set interrupt callback function
(+) Output2ResetCallback      : Timer x output 2 reset interrupt callback function
(+) BurstDMATransferCallback  : Timer x Burst DMA completed interrupt callback function


(1)卸载注册使用HAL_HRTIM_UnRegisterCallback和HAL_HRTIM_TIMxUnRegisterCallback
(2)默认情况下,HAL_HRTIM_Init调用后将使用默认的弱定义回调,如果用户注册了 回调,将使用用户设置的。
(3)Callbacks can be registered/unregistered in HAL_HRTIM_STATE_READY state only.
        Exception done MspInit/MspDeInit functions that can be registered/unregistered
        in HAL_HRTIM_STATE_READY or HAL_HRTIM_STATE_RESET states, thus registered
        (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
        Then, the user first registers the MspInit/MspDeInit user callbacks
        using HAL_HRTIM_RegisterCallback() before calling HAL_HRTIM_DeInit()
         or HAL_HRTIM_Init() function.


回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2020-1-22 09:36:52 | 显示全部楼层
前排
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106688
QQ
 楼主| 发表于 2020-1-22 09:52:27 | 显示全部楼层

昨天没有更新完,大扫除去了,今天继续贴下春节对联。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106688
QQ
 楼主| 发表于 2020-1-27 10:18:32 | 显示全部楼层
继续更新。
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-1-27 11:40:20 | 显示全部楼层
过年就看硬汉大哥的贺岁片。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 03:11 , Processed in 0.199628 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表