STM32F103系列PWM波

2023-05-16

话不多说,直接上我能跑通的代码

pwm.h

#ifndef _PWM_H_
#define _PWM_H_

#include "stm32f10x.h"

void PWM_Init(void);

#endif

pwm.c

#include "PWM.h"

void PWM_Init(void)
{
	GPIO_InitTypeDef 			GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  	TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  			TIM_OCInitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3 ;
	//定时器TIM2的PWM输出通道2,3,4,TIM2,CH2,3,4.
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 ;
    //定时器TIM3的PWM输出通道1,2  TIM3,CH1,2。
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO
	
	TIM_TimeBaseStructure.TIM_Period = 999;//自动重装值
	TIM_TimeBaseStructure.TIM_Prescaler =719; //时钟预分频数
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //初始化TIM4
	
	TIM_TimeBaseStructure.TIM_Period = 999;//自动重装值
	TIM_TimeBaseStructure.TIM_Prescaler =719; //时钟预分频数
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化TIM4
	
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//设置PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能
    TIM_OCInitStructure.TIM_Pulse = 0; //
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性为高
    TIM_OC2Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH2
	TIM_OC3Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH3
	TIM_OC4Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH4
	TIM_OC1Init(TIM3, &TIM_OCInitStructure);//初始化TIM3_CH1
	TIM_OC2Init(TIM3, &TIM_OCInitStructure);//初始化TIM3_CH2
	
	TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC1
    TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC2
    TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC3   
    TIM_ARRPreloadConfig(TIM2, ENABLE); //使能重装寄存器
	
	TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//OC4
	TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//OC5
	TIM_ARRPreloadConfig(TIM3, ENABLE); //使能重装寄存器
	
	TIM_Cmd(TIM2, ENABLE);//使能定时器TIM2,准备工作
	TIM_Cmd(TIM3, ENABLE);//使能定时器TIM3,准备工作
}	

上述中
TIM_TimeBaseStructure.TIM_Period = 999;//自动重装值
TIM_TimeBaseStructure.TIM_Prescaler =719; //时钟预分频数
在单片机中的频率就是
72000000 / ( (999+1) * (719+1) )
=72000000 / 1000*720
=100
所以这个数值所出来的pwm波是1s / 100 = 10ms一次的波
在main中,所用到的函数为:
TIM_SetCompareX(TIMX, 150);
其中第一个X为单片机中第几个通道,比如,ch1,则X为1
第二个X为第几个定时器
150为你在这个10ms中,多少时间是高电平。因为TIM_TimeBaseStructure.TIM_Period = 999;
所以他就是150 / (999+1)=15% 所以他就是15%的时间为高电平
例子:在pwm.c中配置了TIM3的通道2
所以函数为:TIM_SetCompare2(TIM3, 150);

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

STM32F103系列PWM波 的相关文章

  • Nvidia Xavier GPIO 输入输出 中断 PWM

    文章目录 前言Jetson GPIO安装可用引脚点亮LEDGPIO输出示例GPIO输入示例GPIO EventGPIO InterruptPWM微信公众号 前言 Nvidia Jetson AGX Xavier 硬件相关 这篇讲到Xavie
  • pixhawk: px4代码初学分析:追溯电机控制--pwm输出

    追溯电机控制 pwm输出 正常工作状态下pwm输出过程简述 xff1a 其他状态下pwm输出 xff1a 正常工作状态下pwm输出过程简述 xff1a 姿态解算部分得出姿态控制量通过px4io cpp把姿态控制量发送给IOIO串口读取姿态控
  • 首个单芯片超小封装I2C转PWM解决方案

    ZW10I8X系列 高性能工业级16位高精度I2C转PWM接口SOC芯片 接口标准 符合飞利浦的I2C标准规范 xff0c 目前支持的速度为小于100kbit 建议使用50k 1个使能脚 xff08 ZW10I8xE后缀带E的 xff09
  • 浅谈PWM控制电机

    先简单说说这几种模式 1 双极模式 xff0c 即电枢电压极性是正负交替的 xff0c 优点 xff1a 能正反转运行 xff0c 启动快 xff0c 调速精度高 xff0c 动态性能好 xff0c 调速静差小 xff0c 调速范围大 xf
  • STM32输出PWM波形错误解析

    一 背景 项目中需要用STM32F407输出4路PWM波形控制两个A4950模块 xff0c 从而驱动2个直流电机 使用TIM1的在PE9 PE11 PE13 PE14上分别产生4路PWM波形 xff0c 前两路 xff08 记作pwm1
  • STM32f103时钟树详解

    一 概述 stm32有四种时钟信号源 xff0c HSE 高速外部时钟 HSI xff08 高速内部时钟 xff09 LSE xff08 低速外部时钟 xff09 LSI xff08 低速内部时钟 xff09 HSE通常接8M晶振 xff0
  • 拓展模块使用教程和心得(三):ULN2003模块与28BYJ48步进电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 关于ULN2003模块和对应的28BYJ48步进电机 xff0c 网上现有的资料与教程对于初学者有点不太友好 xff0c 造成的现象是仅仅只能让步进电机转起来 xff0c 但是没有对于控制转速和转角的实践分析 xff0c 本
  • RTX移植STM32F103,超详细~

    目录 RTX移植前言移植1 创建工程2 配置工程3 添加LED文件4 编写测试代码5 编译烧录 RTX移植 往期回顾 为什么需要RTOS 前言 keil RTX是一款应用广泛的嵌入式RTOS xff0c 具体可见官网 为什么需要RTOS x
  • 用PWM控制舵机(以是stm32为例)

    因为做校创需要用到舵机 xff0c 以前知道大致的理论 xff0c 因此看了一些帖子 xff0c 总结一下被以后查看 什么是PWM波 PWM就是脉冲宽度调制 xff0c 也就是占空比可变的脉冲波形 pwm的占空比 xff0c 就是指高电平保
  • 快速学习Stm32舵机控制板控制一个舵机运动

    PWM是什么 PWM 英文名Pulse Width Modulation 是脉冲宽度调制缩写 它是通过对一系列脉冲的宽度进行调制 等效出所需要的波形 包含形状以及幅值 对模拟信号电平进行数字编码 也就是说通过调节占空比的变化来调节信号 能量
  • 学习PS2无线手柄解码通讯手册

    学习 PS2 无线手柄的使用方法 将市场上 PS2 手柄通过解码应用到我们自己产品之中 比如控制智能车 机械臂等等任何涉及无线通信控制的一些diy场景 本次主要让大家了解 PS2 无线手柄的工作原理 以及掌握 PS2 无线手柄的使用并最终通
  • STM32 超声波模块测距

    目录 HC SR04模块 HC SR04超声波测距模块工作原理 HC SR04超声波模块的时序触发图 思路步骤 代码 实验结果 总结 HC SR04模块 HC SR04超声波测距模块工作原理 1 采用IO口TRIG触发测距 给至少10us的
  • STM32进入Standby模式并唤醒

    项目背景 设备具备电池 电源适配器两种供电方式 实现出厂 和电池一并密封装盒 时最低功耗 即进入待机模式 到用户开始使用时需要手动磁棒唤醒 开始复位运行 在检测到设备是交流供电时 设备全速运行 检测到是电池供电时 定时采集数据 采集完毕进入
  • STM32定时器-基本定时器

    目录 定时器分类 基本定时器功能框图讲解 基本定时器功能 时钟源 计数器时钟 计数器 自动重装载寄存器 定时时间的计算 定时器初始化结构体详解 实验 定时器分类 STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器
  • PMIC驱动之—PMIC硬件相关知识

    PMIC 电源管理集成电路 Power Management IC 在之前项目中 驱动最小系统 对于PMIC这块儿很懵懂 故抽时间查看一些优秀博文及资料 加强对电源管理的理解 本文介绍 PMIC 硬件电路相关的一些知识 在此作一些阶段性的学
  • 使用HAL库开发STM32:使用Timer输出PWM信号

    文章目录 目的 基础说明 输出PWM信号 总结 目的 单片机输出PWM信号是很常用的一种功能需求 STM32中通常使用Timer来输出PWM信号 这篇文章将对相关内容做个说明 基础说明 在使用Timer输出PWM信号需要了解一些Timer的
  • STM32串口配置实验

    STM32 串口简介 串口作为 MCU 的重要外部接口 同时也是软件开发重要的调试手段 其重要性不言而喻 现在基本上所有的 MCU 都会带有串口 STM32 自然也不例外 STM32 的串口资源相当丰富的 功能也相当强劲 ALIENTEK
  • STM32F103 - 配置规则通道参数 - 05 - unfinished -unfinished-unfinished

    五 配置规则通道参数 设置指定ADC的规则组通道 一个序列 采样时间 常规通道配置 ADC RegularChannelConfig ADC1 ch 1 ADC SampleTime 239Cycles5 ADC1 ADC通道 采样时间为2
  • STM32基本IO的寄存器介绍

    STM32基本IO的寄存器介绍 说明 简介 端口配置低寄存器 32位 数据寄存器 32位 置位 复位寄存器 32位 复位寄存器 16位 锁存寄存器 32位 说明 最近自己在学习STM32 跟着原子哥的STM32教学视频学习 参考的资料有来自
  • STM32通用定时器使用详解

    1 通用定时器基本介绍 通用定时器包括TIM2 TIM3 TIM4和TIM5 STM32通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成 每个定时器都是完全独立的 没有互相共享任何资源 它们可以一起同步操作 定时器可以进行定

随机推荐

  • Haar特征+Adaboost人脸识别C实现

    Haar特征 43 Adaboost的人脸识别C实现 xff0c 部分简单的功能借助Opencv实现 xff0c 数据是MIT人脸数据 程序的实现主要是参考 Rapid Object Detection using a Boosted ca
  • Redhat6.5出现不识别CPU

    Detected CPU family 6 model 6Z UNSUPPORTED HARDUARE DEVICE CPU family 6 model gt 59 Redhat6 5版本会出现开机不是别cpu重启服务器 xff0c 可解
  • 爬取豆瓣网站前top250电影名称和评分保存到本地excel中(附效果图和代码)

    import requests from lxml import etree import xlwt headers 61 39 User Agent 39 39 Mozilla 5 0 Windows NT 10 0 Win64 x64
  • CentOS和Ubuntu有什么不同

    很多的初学者在刚开始接触Linux的时候 xff0c 是否有很多疑问 xff0c Linux有上百个系统到达有什么区别 Linux代表探索和自由 因为Linux在技术上代表内核的意思 内核是为设备提供驱动程序 网络通信 文件系统 进程管理等
  • Ubuntu系统各个版本

    http releases ubuntu com releases
  • ArduSub ROV无法前进

    本方案仅适用于ArduSub 控制系统的ROV xff0c 本方案参考ArduSub 官网http www ArduSub com 里的解决方法 问题描述 xff1a 本人在ROV实验中遇到的问题 xff1a 使用遥控器控制ROV向前行驶时
  • STM32F103C8T6核心板——引脚使用注意!!!

    STM32F103C8T6核心板 引脚使用注意 xff01 xff01 xff01 有的引脚与下载JTAG端口复用 有的与BOOT复用 xff0c 若发生引脚不够使用的情况 xff0c 可以将他们进行一点特殊的设置 xff0c 变成普通引脚
  • Keil5_因为临时环境变量造成的编译错误

    Keil5 因为临时环境变量造成的编译错误 如果安装本文所附文件 xff08 注册时打开两个软件都需要管理员权限运行 xff09 仍有同样问题 xff0c 原因可能有如下四个可能 一 电脑用户名使用了中文 解决办法 xff1a 更改为英文
  • STM32_CUBE_IDE_工程的导入和导出

    STM32 CUBE IDE 工程的导入和导出 1 我们写好了代码想要上传到代码仓库共享给别人怎么办 xff0c 就需要先导出工程再上传而不能直接将工程代码直接上传 2 导出工程 3 上传到码云仓库 4 导入之前导出的工程 导出工程 导出的
  • 常见驱动电路

    常见驱动电路 1 基础知识补充 xff08 三极管和MOS管 xff09 2 网上搜集的一些资料 xff08 个人认为可行 xff09 3 实践中使用过的一些驱动电路 4 学习开发板上面的驱动电路 三极管和MOS管的区别 1 三极管和MOS
  • VScode+keil插件-取代keil开发不要太爽了

    VScode 43 keil插件 取代keil开发不要太爽了 前言 xff1a 之前几年开发都是使用的keil xff0c 所以基本所有工程都是keil的工程 xff0c 一时间开发项目还不能及时转变使用HAL库开发 xff08 stm32
  • 关于maven项目中pom.xml文件报红问题的解决方法

    主要原因是可能需要的依赖没有进行自动的加载到本地仓库 xff0c 可以通过设置File gt Settings 设置好maven的本地仓库的位置以及maven的位置 xff0c 即可解决依赖的问题
  • 网络调试助手——局域网广播消息——模拟HTTP服务器

    网络调试助手 局域网广播消息 模拟HTTP服务器 前言 xff1a 作为一名嵌入式开发者 xff0c 不能熟练使用网络调试助手 xff0c 我羞愧至极 xff0c 赶紧弄明白记录下来才是正事 怎么使用网络调试助手向局域网广播消息 注释 xf
  • AT89C51、AT89S51、STC89C51有什么区别?

    标题AT89C51 AT89S51 STC89C51有什么区别 xff1f 1 首先明确一点 xff0c 这几个型号都属于51单片机 xff0c 程序和电路是通用的 xff1b 2 AT89C51是美国ATMEL公司生产的 xff0c 下载
  • 新装的GIT需要配置秘钥才能正常使用

    新装的GIT需要配置秘钥才能正常使用 实际这个过程就是git配置SSH 1 打开git 命令行终端输入指令生成秘钥 操作过程 xff1a 连击三次回车 xff0c 如下图即为成功 ssh span class token operator
  • 正则表达式_总结

    正则表达式 总结 说明 xff1a 限定SpinBox控件的输入范围 span class token comment 限定输入框为1 120 span SpinBox span class token punctuation span i
  • 电路设计_运算放大器应用

    电路设计 运算放大器应用 说明 xff1a 运算放大器是个万用宝 xff0c 要好好利用起来 xff0c 1 电压跟随 xff1a 起到隔离作用 xff0c 高阻抗变低阻抗 2 同向比例放大器 xff1a 放大输入电压信号 xff0c 在输
  • ESP32_IDF_基于win11的开发环境搭建

    ESP32 IDF 基于win11的开发环境搭建 说明 xff1a 1 安装ofline 2 编译下载 xff08 本来打算使用vscode配合使用来开发的 xff0c 奈何vscode环境真难搞 xff0c 放弃了 xff0c 用不惯 x
  • 树莓派的联网方式

    树莓派的多种联网方式 配置WiFi文件将空白的ssh文件放入sd卡配置WiFI文件 家庭局域网或热点查找树莓派ip 通过网线联网 配置WiFi文件 在sd卡中烧录系统之后 xff0c sd卡中会有如下程序 xff1a 将空白的ssh文件放入
  • STM32F103系列PWM波

    话不多说 xff0c 直接上我能跑通的代码 pwm h span class token macro property span class token directive hash span span class token direct