STM32CubeMX定时器输出比较模式——输出相位可调矩形波

2023-11-07

1.介绍

        STM32的定时器通道输出矩形波,可以使用PWM模式和输出比较模式。PWM模式能够产生频率和占空比可调的矩形波信号,但不能对信号的相位进行调节。使用输出比较模式,可以实现信号的相位调节和频率调节,但不能对信号的占空比进行调节。

       输出比较模式,是当计数器与比较寄存器数值相等时,做出相应动作。其运行模式由OCxM[2:0]控制,具体如下:

OCxM[2:0] 功能
000 冻结,输出比较不起作用
001 设置为有效电平
010 设置为无效电平
011 翻转
100 强制为无效电平
101 强制为有效电平
110 PWM模式1
111 PWM模式2

        使用输出比较模式,输出相位可调的矩形波,就需要设置输出模式为翻转。定时器检测到计数值与比较寄存器值相等时,翻转电平,产生矩形波。改变比较寄存器的数值就能改变相位大小,而频率保存不变。其输出波形关系图如下:

2.STM32CubeMx配置

         任务:配置TIM1的CH1和CH2为输出比较模式,输出频率为1KHz。TIM1挂载时钟为120MHz。

1-setp:配置时钟源,设置CH1与CH2的模式。

2-setp:配置定时器分频数和计数值,在如下配置的数据下,计数频率=120M/12/5000=2000Hz,由于在输出比较模式下,两个比较点之间电平相同,因此最终输出频率还要除2,为1KHz。

 3-setp:配置工作模式和相位关系,工作模式为翻转,在如下配置数据下,CH1通道相位超前CH2,相差180度。

3.程序设置

        使用HAL库,需要有开启函数,开启比较输出。

HAL_TIM_OC_Start(&htim1,TIM_CHANNEL_1);
HAL_TIM_OC_Start(&htim1,TIM_CHANNEL_2);

       在程序中修改相位,即对比较寄存器进行修改,使用函数如下:

__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,0);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2,4999);

 4.输出结果

       设置CH1超前CH2输出,超前相位为180度,频率为1KHz,输出波形如下:

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CubeMX定时器输出比较模式——输出相位可调矩形波 的相关文章

  • 高速风筒方案中的共膜电感--【其利天下技术】

    我们知道 高速吹风筒的电源采用的是日常我们用的市电 市电是高压交流电源 所以高压电路的噪声是比较大的 为了使产品符合安规要求 我们的电路设计必须要符合安规设计 所以这也是高速吹风筒为什么要加安规电容和共模电感的主要原因 那么什么是共膜电感呢
  • 基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)

    一 前言 本项目是基于单片机设计的电子指南针 主要利用STC89C52作为主控芯片和LSM303DLH模块作为指南针模块 通过LCD1602液晶显示屏来展示检测到的指南针信息 在日常生活中 指南针是一种非常实用的工具 可以帮助我们确定方向
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 串口流控(CTS/RTS)使用详解

    1 流控概念 在两个设备正常通信时 由于处理速度不同 就存在这样一个问题 有的快 有的慢 在某些情况下 就可能导致丢失数据的情况 如台式机与单片机之间的通讯 接收端数据缓冲区已满 则此时继续发送来的数据就会丢失 流控制能解决这个问题 当接收
  • 串口流控(CTS/RTS)使用详解

    1 流控概念 在两个设备正常通信时 由于处理速度不同 就存在这样一个问题 有的快 有的慢 在某些情况下 就可能导致丢失数据的情况 如台式机与单片机之间的通讯 接收端数据缓冲区已满 则此时继续发送来的数据就会丢失 流控制能解决这个问题 当接收
  • 擦除后无法写入闪存

    所以我不能在擦除后直接写入内部闪存 如果写操作之前没有擦除操作 那么我可以 有什么想法吗 编程函数返回 成功写入 值 但查看内存时 没有写入任何数据 这是代码 uint32 t pageAddress 0x08008000 uint16 t
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • 普冉32位单片机 PY32C642,M0+内核,1.7 V ~ 5.5 V宽工作电压

    PY32C642 单片机采用高性能的 32 位 ARM Cortex M0 内核 宽电压工作范围 嵌入 24Kbytes Flash 和 3 Kbytes SRAM 存储器 最高工作频率 24 MHz 包含多种不同封装类型产品 工作温度范围
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015

随机推荐

  • 运维面试大全

    文章目录 第一阶段 平常怎么处理故障 思路是什么样的 公网和私网分类以及范围 本机地址 网络地址 广播地址 交换机的工作原理 ICMP是什么干什么用的 它有哪些命令 TCP和UDP协议的区别 tcp有哪些控制位 分别是什么意思 你是用过哪些
  • STM32——串口概念及应用

    目录 通讯接口背景知识 两种通讯方式对比 串口通讯 常见的串行通信接口 STM32串口通信基础 STM32的串口通信接口 UART异步通信方式引脚连接方法 UART异步通讯方式特点 串口通信过程 串口异步通讯需要定义的参数 STM32常用串
  • 使用Tensorflow2.0执行视觉显著性检测(Visual Saliency Detection)

    使用Tensorflow2 0执行视觉显著性检测 Visual Saliency Detection 上一篇博客介绍了如何使用Python OpenCV执行视觉显著性检测 Visual Saliency Detection 这篇博客将介绍如
  • HTTP服务器(一)HTTP服务器入门介绍

    一 简介 1 1 做项目的时候 要请求REST服务器 而FEST服务器还是用http基本原理 即阉割版 来请求 1 2 请求端口EndPoint 请求方法Method 请求内容格式ContentType 请求的数类型PostData 一般为
  • C++ 代码评审最终指南——第 2 部分

    在第 1 部分中 我们对代码评审做了一个广泛讨论 这一部分将重点讨论 C 提供一个代码评审清单和一些最佳实践 您可以按任何顺序阅读 但是我们建议您先返回去阅读一下我们之前的帖子 C 评审最终清单 代码评审清单从来都不是全面的 因为要检查的问
  • linux 安装dotnet sdk

    linux 安装dotnet sdk 以dotnet6 0为例 1 下载linux内核对应的dotnet6 0 sdk文件 进入https dotnet microsoft com en us download dotnet 6 0 找到l
  • stn32cubemx生成代码有问题的解决方法

    问题1 生成代码时 有显示你的生成目录还说一个问题的问题 就是环境没装好 要装一个java的环境 即使你本来已经装了这个环境 但是还是出现了同样的问题 那就装我这个版本 我刚才使用这个版本就成功了 问题2 就是要下相应的固件 manage
  • pycharm、idea插件代理设置,插件安装

    pycharm和idea都是intellij的 所以插件安装是设置代理方法相似 以pycharm举例 1 已经安装的插件列表 2 查找要安装的插件 没有 会给出下载插件的链接地址 3 打开链接地址 弹出如下 搜索在线插件 左下角是http代
  • 14-----关于error while loading shared libraries: xxx.so: cannot open shared object file: No such file

    一 linux找不到动态链接库 so文件的解决方法 关于这种问题 很明显是自己生成的动态库在被使用时 无法找到准确的路径而导致的 1 问题分析 首先运行可以执行程序 若出现上述错误 说明找不到动态库的路径 我们需要使用ldd去查看哪个动态库
  • 在Cisco设备上配置接口速度和双工

    默认情况下 思科交换机将自动协商速度和双工设置 将设备 交换机 路由器或工作站 连接到 Cisco 交换机上的端口时 将发生协商过程 设备将就传输参数达成一致 当今的大多数网络适配器都支持此功能 在本文中 您将了解如何使用 NCM 应用程序
  • FPGA UltraScale+ 利用ICAP原语实现Multiboot功能

    例程参考 https blog csdn net xiaomingzi55 article details 124365631 1 这个贴子说的很清楚 唯一一点就是它是ICAP2 这样写是没问题的 1 对于BPI模式来说 可以通过RS 1
  • python Excel处理

    Python 前言 我是一个菜鸡 写文章是为了记录自己成长的过程 如有错误 请各位大佬轻喷 欢迎大家指正 基础知识不做赘述 下文介绍Excel办公自动化 openpyxl导入 安装步骤 win R 输入cmd 然后打出pip install
  • 单片机上云流程(使用STM32和esp8266构建物联网体系)

    1 首先是给esp8266烧录MQTT固件 咳咳 首先当然是准备一个esp8266 01s和对应的烧录器啊qwq 选择好要烧录进去的固件 没有的话去安信可官网下载 然后配置好对应的选项 点击ERASE先进行擦除 再点击START进行烧录 这
  • Makefile中使用Shell

    http blog csdn net zdl1016 article details 6448989 http blog csdn net absurd article details 636418 Makefile与Shell的问题 大概
  • FPGA程序上板调试问题

    FPGA程序上板调试问题 1 memory block 找不到coe文件 原因1 coe文件格式有问题 memory initialization radix 是数值格式 memory initialization vector 是初始化的
  • Neuronal Dynamics:第五章笔记

    Neuronal Dynamics 第五章笔记
  • 一文读懂C++的if与else判断语句

    说个明白 先从最简单的说起 if语句 if语句是C 中最简单的判断语句 if S 语句1 语句2 如果S为真 非零 则执行语句1 否则执行语句2 如果语句1就是单个语句 则可以这么写 if S 语句1 这里的分号不能少 或者这么写 if S
  • DevExpress v15.2.4帮助文档下载(全)

    原文地址 http www devexpresscn com Resources Documentation 498 html DevExpress v15 2帮助文档下载列表大全来啦 包含 net系列所有帮助文档 提供CHM和PDF两个版
  • 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?

    展开全部 首先需要了解在实施过程中我们可能碰到哪些风险 按照一般意义 我们常常所说的风险分为两大e69da5e6ba903231313335323631343130323136353331333436316264类 一种是不可预知的 一种是
  • STM32CubeMX定时器输出比较模式——输出相位可调矩形波

    1 介绍 STM32的定时器通道输出矩形波 可以使用PWM模式和输出比较模式 PWM模式能够产生频率和占空比可调的矩形波信号 但不能对信号的相位进行调节 使用输出比较模式 可以实现信号的相位调节和频率调节 但不能对信号的占空比进行调节 输出