首页 > 其他分享 >PWM波形生成

PWM波形生成

时间:2024-07-27 15:28:40浏览次数:16  
标签:定时器 APB1 波形 APB2 生成 TIM PWM 时钟

背景

方法

定时器

(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线

(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线

(3)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟;

(4)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍。

对于stm32f407 168M主频,因为系统初始化SystemInit函数里初始化APB1总线时钟为4分频即42M,所以TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M;APB2总线时钟为2分频即84M,TIM1、TIM8~TIM11的时钟为APB2时钟的两倍即168M。

descript

基本定时器没有输出pwm波的功能, 只能用通用定时器或者高级定时器来达到生成pwm波效果. 我们选用通用定时器实现。

prescaler

预分频器

Auto Reload Register

自动重装载寄存器

auto-load preload

影子寄存器, 立即生效 or 等待当前轮执行完生效

update-interrupt

一般情况下,我们开启定时器总是要调用中断,所以代码为`HAL_TIM_BASE_Start_IT()`,其中update interrupt会在counter与auto reload register中值相同时触发中断,这样我们就知道达到了我们想要的时间,可以在callback函数中添加我们的功能.

注意:STM32配置TIM后会直接触发一次中断

其中有一些以`__`开头的函数可以更改寄存器的值

counter = __HAL_TIM_GET_COUNTER(&htim10);
__HAL_TIM_SET_PRESCALER(&htim10, prescaler);
__HAL_TIM_SET_AUTORELOAD(&htim10, autoreload);

外部时钟模式

外部时钟模式有外部时钟模式1和外部时钟模式2.

外部时钟模式2直接

注意过滤器(filter)的设置,一般设置为最大值, 也就是15.

PWM波形生成

注意PWM Generation Channel 中 Pulse 为比较寄存器值, 应该小于 auto reload的值. Compare 寄存器含义为低于指定计数次, 高电平; 高于指定计数次, 低电平(PWM mode 1下)

其中常用操作为更改Compare 寄存器值

__HAL_TIM_SET_COMPARE(&htim9, TIM_CHANNEL_1, compareValue);

代码参考: 输出应为1k Hz, 占空比25%

STM32F407NUEDC/PWM at main · Casdos/STM32F407NUEDC (github.com)

参考

https://blog.csdn.net/u014453443/article/details/100101152

标签:定时器,APB1,波形,APB2,生成,TIM,PWM,时钟
From: https://www.cnblogs.com/alien-han/p/18327021

相关文章

  • AI绘画入门实践 | Midjourney:使用 --iw 通过垫图生成头像
    在Midjourney中,--iw可以根据上传的图作为垫图,影响生成结果的构图、风格与颜色。使用格式:--iw0-2之间含1位小数的值数值越接近2:MJ参考图片的权重越大数值越接近0:MJ参考提示词的权重越大PS:使用--ar保持出图与原图的宽高一致,否则出图会被压缩或者拉伸使用演示......
  • 使用 R 生成寿命图
    我有一个记录单个细胞的寿命和生成时间的数据集,我想将其绘制如下:Example_RLS_plot参考:https://doi.org/10.1186/s12951-022-01379-9这是我的示例数据集:|Cell|Generation|Doubling_time||--------|----------|--------------||1......
  • 【愚公系列】《短视频生成与剪辑实战》005-使用 Midjourney 进行 Al 绘图
    ......
  • 七夕特献:用代码编织爱情的浪漫,程序员的专属爱情证书生成器
    文章目录1.背景介绍2.**为什么是爱情证书生成器?**3.**功能亮点**4.**技术实现**5.**如何获取?**6.总结1.背景介绍在这个数字化的时代,程序员们用代码编织世界,创造无限可能。七夕将至,一个充满古老传说和浪漫气息的东方情人节,我们何不用自己最擅长的方式,来表达内......
  • AI应用之根据行业标准生成PRD文档
    AI应用之根据行业标准生成PRD文档概要       近日我们再次尝试用AI生成PRD文档,以下是基于Kimi,其它AI平台类型具体过程我们先提供一些行规与标准PDF的URL给kimi回复是生成MRD文档生成PRD文档要求再细化PRD文档生成完整PRD内容如下,我们看到如下文档基本大纲已经生成救灾物资......
  • 3.5-RNN文本生成
    1语言模型生成文本的顺序前面我们已经能够实现使用下图的LSTM网络进行语言建模;对于一个已经在语料库上学习好的LSTM模型;如果语料库就只是yousaygoobyeandisayhello;那么当把单词i输入到模型中,Timexxx层的第一个LSTM层将会输出一个概率分布,这个概率分布中概率最大......
  • 解密黑盒:Mojo模型中自定义模型解释性报告的动态生成
    解密黑盒:Mojo模型中自定义模型解释性报告的动态生成在机器学习领域,模型的可解释性是一个至关重要的议题。Mojo模型,作为一个通用术语,可以指代任何机器学习或深度学习模型。随着模型被集成到生产环境中,提供模型决策的透明度和可解释性变得尤为关键。本文将探讨如何在Mojo模型......
  • jwt令牌生成和解析 + 几种数据获取方法
    ——————jwt令牌生成和解析jdk:17springboot:3.x JwtUtils.java其中StringsingKey这一部分不要太短,不然会报错packagecom.example.utils;importio.jsonwebtoken.Claims;importio.jsonwebtoken.Jwts;importio.jsonwebtoken.SignatureAlgorithm;importjava......
  • 使用 Python 脚本自动生成报告
    使用Python脚本自动生成报告1.简介本文档介绍如何使用Python脚本自动生成报告。此脚本旨在简化报告生成过程,提高效率并减少人为错误。2.需求Python3.6或更高版本Pandas库Matplotlib库3.安装使用pip安装必要的库:pipinstallpandasmatplotlib4.脚本im......
  • FPGA实验8:PWM信号发生器的设计
    一、实验目的与要求1、熟悉QuartusⅡ软件的基本使用方法;2、熟悉EDA实验开发系统的基本使用方法;3、学习VHDL程序中数据对象、数据类型、顺序语句和并行语句的综合使用。二、实验原理设计并调试好一个脉宽数控调制信号发生器,此信号发生器是由两个完全相同的可自加载加法计......