首页 > 其他分享 >pwm输出和输出比较

pwm输出和输出比较

时间:2024-12-30 22:18:40浏览次数:1  
标签:输出 定时器 HAL 电平 TIM pwm 比较

stm32cubemx配置f103zet6定时器中断,pwm波输出模式,输出捕获模式 慢慢更新 - 百叶集 - 博客园

stm32cubemx配置f103zet6定时器中断,pwm波输出模式,输出捕获模式 慢慢更新

 

定时器详细介绍(基于标准库的,原理部分可参考): STM32-定时器详解_KevinFlyn的博客-CSDN博客_stm32定时器

1. 定时器中断配置 配置参考 STM32CubeMX配置定时器中断_小哥。的博客-CSDN博客_stm32cubemx配置定时器中断

使用内部时钟:internal clock,其它默认

 

定时器计数值更新时间:

 

 

 T为定时时间,Psc为预分频数,Arr为自动重装载寄存器的值,Tclk为定时器的输入时钟。
这里为T为1s,Tclk为72MHz,设置Psc为7200-1,Arr为10000-1。

自动重载值。

 

 

打开中断:(在高级定时器中,选择为:TIMX update interrupt)

 

 

 代码部分:

开启定时器:

HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);

中断回调函数:

复制代码
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* USER CODE BEGIN Callback 1 */

  if (htim->Instance == TIM3) { //获取触发中断的定时器号
    printf("tim3! \r\n");
  }

  /* USER CODE END Callback 1 */
}
复制代码

2. 定时器PWM波输出模式

参考:(15条消息) STM32CubeMX—PWM波输出实验_FlyDremever的博客-CSDN博客_cube pwm

 

 

 

 内部时钟,配置CH1,CH2通道pwm输出模式,注意自动配置的GPIO口是否是自己想要的,若不是,且目标io口未被占用,可先将该通道disable,再直接点击目标口主动选择,如下图,选择后再在上图进行配置

 

 

 参数配置:

 

 

 

 内部时钟为 72Mhz,72分频后到定时器时钟1Mhz,1us定时器计数一次,从0计数到99,定时器溢出,重装载值,进行下一次计数。

pwm波频率计算:

(图源: PWM波输出实验_FlyDremever的博客-CSDN博客_cube pwm

 

 

 其中:TIMf定时器时基频率,这里为72Mhz,ARR为自动重载值,即Counter Period(AutoReload Register)

由计数比较值控制占空比 Pluse,pwm模式控制极性(输出电平高低):

PWM模式1,在向上计数时,一旦TIMx_CNT < TIMx_CCR1(上面那个pulse) 时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。

PWM模式2- 在向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平。

生成代码:

手动开启PWM波输出通道:使用定时器PWM函数组,阻塞模式开启(没用中断和dma配置)

    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);

修改占空比推荐使用寄存器的方式: TIMx->CCRx = NUM;   (x为数字。 NUM 范围0 - ARR)

或者调用函数:_HAL_TIM_SetCompare(&htimx,TIM_CHANNEL_X,X);

__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,50);

建议先关闭定时器在修改值。

3.定时器输出比较模式

参考: STM32CubeMX定时器输出比较模式——输出相位可调矩形波_qq_37405067的博客-CSDN博客_stm32定时器输出比较模式

与pwm波输出方式只能调制占空比相比,输出比较模式只能调整相位,注意这里的频率由于要通过两次比较后电平翻转得到,自动重载值减半。

 

 

 使能通道输出:

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

 

           

标签:输出,定时器,HAL,电平,TIM,pwm,比较
From: https://www.cnblogs.com/mokongking/p/18642585

相关文章

  • C语言:固定格式数组输出
    我想实现输入一个数组n(数组a的个数)然后输入数组a(用逗号分隔的输入),然后再输入m(数组b个数)再输入数组b1.输入inta[max],b[max];inti=0,j=0,n,m;//读取数组a的个数scanf("%d",&n);for(i=0;i<n;i++){if(scanf("%d,",&a......
  • 中文ocr效果比较
    我本来是参考的https://blog.csdn.net/bugang4663/article/details/131720149但是后来发现跟他的结果有点区别tesseract很差,最好不要用&"C:\ProgramFiles\Tesseract-OCR\tesseract.exe".\IMG_20240916_034522.jpgttt-lchi_sim结果txt此编辑也示允各疙册  paddleo......
  • 基于双PI控制器和三电平SVPWM交流同步直线电机矢量控制系统的simulink建模与仿真
    1.课题概述      基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率跟踪。 2.系统仿真结果 3.核心程序与模型版本:MATLAB2022a  4.系统原理简介      光伏(Photovoltaic,PV)发电系统利用太阳能直接转换成电能,......
  • ChatGPT提示词指南:让AI输出神器般精准!
    掌握这份提示词指南,让AI成为你的得力助手。从此告别模糊回答,获得精准输出!一、提示词黄金公式1.1四要素公式角色:[专业身份]背景:[情境描述]任务:[具体目标]要求:[输出规范]1.2实战示例角色:资深产品经理背景:我们正在开发一款AI写作助手任务:设计产品核心功能要求:-每个......
  • java比较两个文本不同地方并输出出来
    importjava.io.IOException;//导入处理I/O异常的类importjava.nio.file.Files;//导入用于文件操作的类importjava.nio.file.Paths;//导入用于路径操作的类importjava.util.List;//导入用于存储文件行的列表类importjava.util.Objects;//导入用于对象操作......
  • 手把手教你学simulink(47.1)--永磁直流电动机场景示例:基于Simulink开发一个带有PWM调速
    基于Simulink的PWM调速控制的永磁直流电动机模型实例1.项目背景需求分析永磁直流电动机(PermanentMagnetDCMotor,PMDC)由于其结构简单、效率高、响应速度快等优点,广泛应用于小型设备和便携式设备中,如电动工具、无人机、机器人等。为了实现更加精确的速度控制,脉宽调制(Puls......
  • 2024-11-20《文件的输入与输出》
    文件的输入与输出I/O类FileStream类  下面是一个FileSteam类的操作示例: usingSystem; usingSystem.IO;   namespaceFileIOApplication { classProgram { staticvoidMain(string[]args) { FileStreamF=new......
  • 比较FCFS和SJF两种调度算法
    在操作系统中,进程调度是核心任务之一,用于决定在什么时候由哪个进程来占用CPU资源。两种常见的调度算法是先来先服务(FCFS)和最短作业优先(SJF)。这篇博客将用详细的步骤和例子,帮助你理解这两种算法的工作原理及其优缺点。一、先来先服务(FCFS)工作原理FCFS是最简单的调度算法,按......
  • 【江协STM32】6-3/4 TIM输出比较、PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱动直流电机
    1.输出比较简介OC(OutputCompare)输出比较,主要用来输出PWM波输出比较可以通过比较CNT与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形CCR:使用输入捕获时,它就是捕获寄存器;使用输出比较时,它就是比较寄存器。在输出比......
  • 【练习】A+B 和 C比较(多组输入输出)
    题目A+B和C来源PAT1011题目描述:给定区间[-2^31,2^31]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出“C......