当前位置: 首页 > backend >正文

STM32 HAL库 HAL_TIM_OC_Start函数解读

STM32 HAL库 HAL_TIM_OC_Start函数解读

关键词: STM32; HAL; HAL_TIM_OC_Start

该函数位于文件stm32f4xx_hal_tim.c

HAL_TIM_OC_Start函数

/*** @brief  Starts the TIM Output Compare signal generation.        (开始TIM输出比较信号生成)* @param  htim TIM Output Compare handle* @param  Channel TIM Channel to be enabled*          This parameter can be one of the following values:*            @arg TIM_CHANNEL_1: TIM Channel 1 selected*            @arg TIM_CHANNEL_2: TIM Channel 2 selected*            @arg TIM_CHANNEL_3: TIM Channel 3 selected*            @arg TIM_CHANNEL_4: TIM Channel 4 selected* @retval HAL status*/
HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
{uint32_t tmpsmcr;/* Check the parameters (检查传入的定时器实例和通道是否有效) */assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));/* Check the TIM channel state (检查指定的通道是否处于就绪状态, 如果不是, 则返回错误状态) */if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY){return HAL_ERROR;}/* Set the TIM channel state (设置通道状态-将通道状态设置为忙碌, 表示通道正在使用中) */TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);/* Enable the Output compare channel (启用指定的输出比较通道) */TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);/* 主输出使能, 如果定时器实例支持刹车功能, 则启动主输出 MOE位 置1 */if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET){/* Enable the main output (TIM1、TIM8主输出使能) */__HAL_TIM_MOE_ENABLE(htim);}/* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger *//* 外设模式处理, 如果定时器处于从模式, 只有在从模式未启用触发时才需要手动启用定时器 */if (IS_TIM_SLAVE_INSTANCE(htim->Instance)){tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)){__HAL_TIM_ENABLE(htim);}}else{__HAL_TIM_ENABLE(htim);             /* 启动定时器 CNT开始计数 */}/* Return function status */return HAL_OK;
}

从下图中可以看到, HAL_TIM_OC_Start函数与HAL_TIM_PWM_Start函数一摸一样

相关参考链接

STM32 HAL库 HAL_TIM_OC_Stop函数详细解释_stm32使用hal函数编程-CSDN博客

http://www.xdnf.cn/news/17550.html

相关文章:

  • 梯度裁剪总结
  • MCU的设计原理
  • AcWing 6479. 点格棋
  • MySQL 基础操作教程
  • PyTorch基础(使用Numpy实现机器学习)
  • 2025-8-11-C++ 学习 暴力枚举(2)
  • 面试题-----微服务业务
  • wed前端第三次作业
  • 本地文件夹与 GitHub 远程仓库绑定并进行日常操作的完整命令流程
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的多目标跟踪与行为分析优化(393)
  • Windows Server 2022域控制器部署与DNS集成方案
  • 机器学习中数据集的划分难点及实现
  • LangGraph 历史追溯 人机协同(Human-in-the-loop,HITL)
  • 通用 maven 私服 settings.xml 多源配置文件(多个仓库优先级配置)
  • OpenCV计算机视觉实战(19)——特征描述符详解
  • Python自动化测试实战:reCAPTCHA V3绕过技术深度解析
  • 关于JavaScript 性能优化的实战指南
  • 4-下一代防火墙组网方案
  • 需求列表如何做层级结构
  • Redis类型之Hash
  • vscode的wsl环境,怎么打开linux盘的工程?
  • 【Oracle】如何使用DBCA工具删除数据库?
  • 九,算法-递归
  • ​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合
  • Spark 优化全攻略:从 “卡成 PPT“ 到 “飞一般体验“
  • Empire--安装、使用
  • 布控球:临时布防场景的高清回传利器-伟博
  • 人工智能-python-机器学习-逻辑回归与K-Means算法:理论与应用
  • PYTHON开发的实现运营数据大屏
  • OFD一键转PDF格式,支持批量转换!