|
STM32G474xx HAL 用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_hrtim.c 00004 * @author MCD 应用团队 00005 * @brief TIM HAL 模块驱动。 00006 * 本文件提供固件函数,用于管理高分辨率定时器(HRTIM)外设的以下功能: 00007 * + HRTIM 初始化 00008 * + DLL 校准启动 00009 * + 定时器时基单元配置 00010 * + 简单时基启动/停止 00011 * + 简单时基启动/停止中断 00012 * + 简单时基启动/停止 DMA 请求 00013 * + 简单输出比较/PWM 通道配置 00014 * + 简单输出比较/PWM 通道启动/停止中断 00015 * + 简单输出比较/PWM 通道启动/停止 DMA 请求 00016 * + 简单输入捕获通道配置 00017 * + 简单输入捕获通道启动/停止中断 00018 * + 简单输入捕获通道启动/停止 DMA 请求 00019 * + 简单单脉冲通道配置 00020 * + 简单单脉冲通道启动/停止中断 00021 * + HRTIM 外部同步配置 00022 * + HRTIM 突发模式控制器配置 00023 * + HRTIM 突发模式控制器使能 00024 * + HRTIM 外部事件调节配置 00025 * + HRTIM 故障调节配置 00026 * + HRTIM 故障使能 00027 * + HRTIM ADC 触发配置 00028 * + 波形定时器配置 00029 * + 波形事件过滤配置 00030 * + 波形死区插入配置 00031 * + 波形斩波模式配置 00032 * + 波形比较单元配置 00033 * + 波形捕获单元配置 00034 * + 波形输出配置 00035 * + 波形计数器启动/停止 00036 * + 波形计数器启动/停止中断 00037 * + 波形计数器启动/停止 DMA 请求 00038 * + 波形输出使能 00039 * + 波形输出电平设置/获取 00040 * + 波形输出状态获取 00041 * + 波形突发 DMA 操作配置 00042 * + 波形突发 DMA 操作启动 00043 * + 波形定时器计数器软件复位 00044 * + 波形捕获软件触发 00045 * + 波形突发模式控制器软件触发 00046 * + 波形定时器预加载寄存器更新使能 00047 * + 波形定时器预加载寄存器软件更新 00048 * + 波形定时器延迟保护状态获取 00049 * + 波形定时器突发状态获取 00050 * + 波形定时器推挽状态获取 00051 * + 外设状态获取 00052 * 00053 ****************************************************************************** 00054 * @attention 00055 * 00056 * 版权所有 (c) 2019 STMicroelectronics。 00057 * 保留所有权利。 00058 * 00059 * 本软件根据许可协议条款发布,该许可协议可以在本软件组件的根目录中的 00060 * LICENSE 文件中找到。 00061 * 如果本软件不附带 LICENSE 文件,则按“按原样”提供。 00062 * 00063 ****************************************************************************** 00064 @verbatim 00065 ============================================================================== 00066 ##### 简单模式与波形模式 ##### 00067 ============================================================================== 00068 [..] HRTIM HAL API 分为两类: 00069 (#)简单函数:这些函数允许将 HRTIM 定时器用作具有高分辨率功能的通用定时器。 00070 HRTIM 简单模式通过名为 HAL_HRTIM_Simple<Function> 的函数集进行管理。 00071 这些函数在名称和用法上与为 TIM 外设定定义的功能相似。 00072 当 HRTIM 定时器在简单模式下运行时,仅使用非常有限的 HRTIM 特性集。 00073 提供以下简单模式: 00074 (++)输出比较模式, 00075 (++)PWM 输出模式, 00076 (++)输入捕获模式, 00077 (++)单脉冲模式。 00078 (#)波形函数:这些函数允许利用 HRTIM 的灵活性产生多种类型的控制信号。 00079 当 HRTIM 定时器在波形模式下运行时,所有 HRTIM 特性均可访问,不受任何限制。 00080 HRTIM 波形模式通过名为 HAL_HRTIM_Waveform<Function> 的函数集进行管理。 00081 00082 ##### 如何使用此驱动程序 ##### 00083 ============================================================================== 00084 [..] 00085 (#)通过实现 HAL_HRTIM_MspInit() 函数初始化 HRTIM 低层资源: 00086 (##)使用 __HRTIMx_CLK_ENABLE() 启用 HRTIM 时钟源 00087 (##)将 HRTIM 引脚连接到 MCU I/O 00088 (+++) 使用以下函数启用 HRTIM GPIO 的时钟: 00089 __HAL_RCC_GPIOx_CLK_ENABLE() 00090 (+++) 使用 HAL_GPIO_Init() 将这些 GPIO 引脚配置为复用功能模式 00091 (##)当使用 DMA 控制数据传输时(例如 HAL_HRTIM_SimpleBaseStart_DMA()) 00092 (+++) 使用 __DMAx_CLK_ENABLE() 启用 DMAx 接口时钟 00093 (+++) 初始化 DMA 句柄 00094 (+++) 使用 __HAL_LINKDMA() 将初始化的 DMA 句柄关联到 HRTIM 句柄的相应 DMA 句柄 00095 (+++) 使用 HAL_DMA_Init() 初始化 DMA 通道 00096 (+++) 使用 HAL_NVIC_SetPriority() 和 HAL_NVIC_EnableIRQ() 配置 DMA 通道传输完成中断的优先级并启用 NVIC 00097 (##)如果使用中断模式(例如 HAL_HRTIM_SimpleBaseStart_IT()) 00098 (+++) 使用 HAL_NVIC_SetPriority() 和 HAL_NVIC_EnableIRQ() 配置相关 HRTIM 中断的优先级并启用 NVIC 00099 00100 (#)使用 HAL_HRTIM_Init() 初始化 HRTIM HAL。HRTIM 配置结构(HRTIM 句柄的字段)指定整个 HRTIM 的哪些全局中断必须启用(突发模式周期、系统故障、故障)。 00101 它还包含 HRTIM 外部同步配置。HRTIM 可以充当主设备(产生同步信号)或从设备(等待触发进行同步)。 00102 00103 (#)使用 HAL_HRTIM_DLLCalibrationStart() 启动高分辨率单元。DLL 校准会定期执行并补偿潜在的电压和温度漂移。DLL 校准周期由 CalibrationRate 参数指定。 00104 00105 (#)HRTIM 定时器在高分辨率单元就绪之前无法使用。可以使用 HAL_HRTIM_PollForDLLCalibration() 检查就绪状态:如果 DLL 校准已完成,该函数返回 HAL_OK;如果在给定超时参数过期时 DLL 校准仍在进行,则返回 HAL_TIMEOUT。也可以使用 HAL_HRTIM_DLLCalibrationStart_IT() 在中断模式下启动 DLL 校准。在这种情况下,当 DLL 校准完成时会产生中断。请注意,由于 DLL 校准是周期性执行的,每次 DLL 校准操作结束时都会产生中断(最坏情况:每 14 微秒产生一次中断!)。 00106 00107 (#) 配置所有 HRTIM 定时器共享的 HRTIM 资源 00108 (##)突发模式控制器: 00109 (+++)HAL_HRTIM_BurstModeConfig(): 配置 HRTIM 突发模式控制器:工作模式(连续或单次)、时钟(源、预分频器)、触发、周期、空闲持续时间。 00110 (##)外部事件调节: 00111 (+++)HAL_HRTIM_EventConfig(): 配置外部事件通道的调节:源、极性、边沿灵敏度。外部事件可用作触发(定时器复位、输入捕获、突发模式、ADC 触发、延迟保护)。也可用于置位或复位定时器输出。最多提供 10 个事件通道。 00112 (+++)HAL_HRTIM_EventPrescalerConfig(): 配置外部事件采样时钟(用于数字滤波)。 00113 (##)故障调节: 00114 (+++)HAL_HRTIM_FaultConfig(): 配置故障通道的调节:源、极性、边沿灵敏度。故障通道用于在异常操作时禁用输出。最多提供 6 个故障通道。 00115 (+++)HAL_HRTIM_FaultPrescalerConfig(): 配置故障采样时钟(用于数字滤波)。 00116 (+++)HAL_HRTIM_FaultModeCtl(): 启用或禁用故障输入电路。默认情况下所有故障输入都被禁用。 00117 (##)ADC 触发: 00118 (+++)HAL_HRTIM_ADCTriggerConfig(): 配置触发 ADC 触发寄存器更新和 ADC 触发的源。提供 4 个独立触发用于启动两个 ADC 的常规和注入序列。 00119 00120 (#) 使用 HAL_HRTIM_TimeBaseConfig() 配置 HRTIM 定时器时基。无论 HRTIM 定时器工作模式如何(简单或波形),都必须调用此函数。它主要配置: 00121 (##)HRTIM 定时器计数器工作模式(连续或单次) 00122 (##)HRTIM 定时器时钟预分频器 00123 (##)HRTIM 定时器周期 00124 (##)HRTIM 定时器重复计数器 00125 00126 *** 如果 HRTIM 定时器在简单模式下运行 *** 00127 =================================================== 00128 [..] 00129 (#) 启动或停止简单定时器 00130 (++)简单时基:HAL_HRTIM_SimpleBaseStart(),HAL_HRTIM_SimpleBaseStop(), 00131 HAL_HRTIM_SimpleBaseStart_IT(),HAL_HRTIM_SimpleBaseStop_IT(), 00132 HAL_HRTIM_SimpleBaseStart_DMA(),HAL_HRTIM_SimpleBaseStop_DMA(). 00133 (++)简单输出比较:HAL_HRTIM_SimpleOCChannelConfig(), 00134 HAL_HRTIM_SimpleOCStart(),HAL_HRTIM_SimpleOCStop(), 00135 HAL_HRTIM_SimpleOCStart_IT(),HAL_HRTIM_SimpleOCStop_IT(), 00136 HAL_HRTIM_SimpleOCStart_DMA(),HAL_HRTIM_SimpleOCStop_DMA(), 00137 (++)简单 PWM 输出:HAL_HRTIM_SimplePWMChannelConfig(), 00138 HAL_HRTIM_SimplePWMStart(),HAL_HRTIM_SimplePWMStop(), 00139 HAL_HRTIM_SimplePWMStart_IT(),HAL_HRTIM_SimplePWMStop_IT(), 00140 HAL_HRTIM_SimplePWMStart_DMA(),HAL_HRTIM_SimplePWMStop_DMA(), 00141 (++)简单输入捕获:HAL_HRTIM_SimpleCaptureChannelConfig(), 00142 HAL_HRTIM_SimpleCaptureStart(),HAL_HRTIM_SimpleCaptureStop(), 00143 HAL_HRTIM_SimpleCaptureStart_IT(),HAL_HRTIM_SimpleCaptureStop_IT(), 00144 HAL_HRTIM_SimpleCaptureStart_DMA(),HAL_HRTIM_SimpleCaptureStop_DMA(). 00145 (++)简单单脉冲:HAL_HRTIM_SimpleOnePulseChannelConfig(), 00146 HAL_HRTIM_SimpleOnePulseStart(),HAL_HRTIM_SimpleOnePulseStop(), 00147