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

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.lryc.cn/news/617786.html

相关文章:

  • maven项目打包成sdk后在别的项目使用
  • 深度解析三大HTTP客户端(Fetch API、Axios 和 Alova)——优劣与选择策略
  • 【03】厦门立林科技——立林科技 嵌入式 校招笔试,题目记录及解析
  • REDIS 各种数据结构有什么作用?都能干什么?
  • 写一篇Ping32和IP-Guard的对比,重点突出Ping32
  • 使用行为树控制机器人(一) —— 节点
  • 芯片学习 8 :IP集成、cluster、lint
  • 大语言模型(LLM)核心概念与应用技术全解析:从Prompt设计到向量检索
  • AI入门学习--如何写好prompt?
  • MySQL 数据操作全流程:创建、读取、更新与删除实战
  • 高精度蓝牙定位:技术、应用与未来发展
  • 【Docker实战进阶】Docker 实战命令大全
  • 从零构建企业级K8S:高可用集群部署指南
  • LeetCode算法日记 - Day 8: 串联所有单词的子串、最小覆盖子串
  • kubeadm搭建生产环境的双master节点k8s高可用集群
  • Android视频编辑方案测评:轻量化剪辑工具的性能表现
  • LAZADA跨境电商自养号测评环境搭建:安全与合规的底层逻辑解析
  • Centos8系统在安装Git包时,报错:“没有任何匹配: git”
  • 【图像处理基石】UE输出渲染视频,有哪些画质相关的维度和标准可以参考?
  • LVPECL、LVDS、LVTTL、LVCMOS四种逻辑电平标准的全面对比
  • redis(1)-基本概念
  • ESP32 输入密码后执行程序
  • 【bug】diff-gaussian-rasterization Windows下编译 bug 解决
  • 苹果个人开发者如何实现应用下载安装
  • 【Unity】打包学习笔记
  • IEEE754 double 类型步长规律,从1.0的二进制表示、紧挨着1.0略大和略小的数开始归纳
  • perl notes【1】
  • 【linux】企业级WEB应用服务器tomcat
  • 达梦数据库慢SQL日志收集和分析
  • 1.Apollo Planning 模块总结