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

STM32F429主控TB6612驱动直流电机----解决PWM波形未输出bug

 

  • 在使用定时器(TIM)进行脉冲宽度调制(PWM)时,除了使能定时器本身(通过TIM_Cmd(TIM2, ENABLE))外,还需要使用TIM_CtrlPWMOutputs(TIM2,ENABLE)函数来启用PWM输出。
  • TIM_Cmd(TIM2, ENABLE)函数用于使能定时器 TIM2,这将启动定时器的计数以及相关的功能。
  • TIM_CtrlPWMOutputs(TIM2, ENABLE)函数用于启用定时器 TIM2 的 PWM 输出功能。这个函数在某些 MCU 中是必需的,因为在某些定时器中,使能 PWM 输出功能是一个独立的步骤。
  • 在没有调用TIM_CtrlPWMOutputs(TIM2, ENABLE)函数时,定时器会正常计数,但不会输出 PWM 波形。因此,只有在调用该函数之后,才能看到 PWM 波形正常输出。
TIM_Cmd(TIM2, ENABLE);
TIM_CtrlPWMOutputs(TIM2,ENABLE);

PWM初始化代码如下:

#include "stm32f4xx.h"                  // Device header/*电机驱动
pa15---tim2_ch1
20khz   50%占空比   1%分辨率    ---ARR100    PSC90   CCR501/20ms = 50hz     ---20k=20ms*/void PWM_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//GPIO_InitTypeDef GPIO_InitStructure;
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//
//	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOA,GPIO_PinSource15 ,GPIO_AF_TIM2);TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;		//ARR    100TIM_TimeBaseInitStructure.TIM_Prescaler = 90 - 1;		//PSC  90TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);//给结构体赋初始值TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 0;		//CCRTIM_OC1Init(TIM2, &TIM_OCInitStructure);TIM_Cmd(TIM2, ENABLE);TIM_CtrlPWMOutputs(TIM2,ENABLE);
}void PWM_SetCompare1(uint16_t Compare)
{TIM_SetCompare1(TIM2, Compare);
}

相关文章:

  • 清华学霸告诉你:如何自学人工智能?
  • 【Python 千题 —— 基础篇】输出列表方差
  • 国产化项目改造:使用达梦数据库和东方通组件部署,前后端分离框架
  • mac中安装Homebrew
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • SpringCloud微服务:Ribbon负载均衡
  • 【微服务专题】Spring启动过程源码解析
  • 【Java并发编程三】线程的基本使用一
  • 论信息系统项目的沟通管理
  • Debian/Ubuntu 安装 NodeJS【详细步骤】
  • 设计模式-创建型模式-单例模式
  • C++ 继承和派生
  • JAXB的XmlElement注解
  • 紫色调城市和奔跑人物剪影背景工会工作总结汇报PPT模板
  • RabbitMQ 部署及配置详解(集群部署)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • flutter的key在widget list的作用以及必要性
  • gcc介绍及安装
  • js对象的深浅拷贝
  • LeetCode29.两数相除 JavaScript
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • python_bomb----数据类型总结
  • Python进阶细节
  • SwizzleMethod 黑魔法
  • TypeScript迭代器
  • vue2.0项目引入element-ui
  • Vue实战(四)登录/注册页的实现
  • 给Prometheus造假数据的方法
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 聊聊hikari连接池的leakDetectionThreshold
  • 盘点那些不知名却常用的 Git 操作
  • 前嗅ForeSpider采集配置界面介绍
  • 如何在 Tornado 中实现 Middleware
  • 系统认识JavaScript正则表达式
  • 学习笔记:对象,原型和继承(1)
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • (力扣)循环队列的实现与详解(C语言)
  • (论文阅读40-45)图像描述1
  • (转)setTimeout 和 setInterval 的区别
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)用.Net的File控件上传文件的解决方案
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET CORE Aws S3 使用
  • .NET 分布式技术比较
  • .Net多线程总结
  • .NET上SQLite的连接
  • .net中的Queue和Stack
  • @property python知乎_Python3基础之:property
  • @RequestParam详解
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)