STM32F103-TIM3 4路PWM波输出
STM32F1 定时器TIM3 4路PWM波输出 ,部分复用IO口 ,由于TIM3PWM输出引脚与JTAG 引脚冲突
所以要先禁用JTAG 。才会有4路PWM输出。
main.c
/* 使用为正点原子精英板 */
/* 接上LED等可以看到效果 */#include <stm32f10x.h>
//#include "myusart.h"
#include "timer.h"
#include "oled.h"
#include "delay.h"int main()
{u16 pwm;delay_init();LED_init();OLED_init();
// USART3_Init();MOTOR_TIME3_Init(999,719);OLED_ShowCharString(10,10,"XXXXXXXX:",16);OLED_RESET_Gram();while(1){pwm++;if(pwm>600) {pwm = 0;}TIM_SetCompare1(TIM3,pwm);TIM_SetCompare2(TIM3,pwm);TIM_SetCompare3(TIM3,pwm);TIM_SetCompare4(TIM3,pwm);OLED_ShowNum(48,45,pwm,3,16);OLED_RESET_Gram();};
}
tim3.h
//输出通道设置PWM占空比
// ************************************************************************************************* //
// ************************************************************************************************* //
//TIM3初始化设置 **此函数部分映射输出通道**
// Period :自动重装在值
// Prescaler:分频系数
//CH1\CH2 ->> PB4\PB5;
//CH3\CH4 ->> PB0\PB1;
void MOTOR_TIME3_Init(u16 Period,u16 Prescaler) //此处设置为 *(999,71)*
{GPIO_InitTypeDef GPIO_Inittim3;TIM_TimeBaseInitTypeDef TIM_TimeBaseInittim3;TIM_OCInitTypeDef TIM_OCInittim3;
// NVIC_InitTypeDef NVIC_Initpwm;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能GPIOB时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //定时器3时钟GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE); //TIM3部分冲映射GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //关闭JTAG-DPTIM_DeInit(TIM3);GPIO_Inittim3.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_0 | GPIO_Pin_1;GPIO_Inittim3.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_Inittim3.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_Inittim3);//初始化GPIOTIM_TimeBaseInittim3.TIM_ClockDivision=TIM_CKD_DIV1; //时钟分割TIM_TimeBaseInittim3.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式TIM_TimeBaseInittim3.TIM_Period=Period; //自动重装载值TIM_TimeBaseInittim3.TIM_Prescaler=Prescaler; //预分频值TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInittim3);TIM_OCInittim3.TIM_OCMode=TIM_OCMode_PWM2; //选择我PWM2模式输出TIM_OCInittim3.TIM_OCPolarity=TIM_OCPolarity_High; //高电平有效TIM_OCInittim3.TIM_Pulse = 0; //设置初始比较值为0TIM_OCInittim3.TIM_OutputState=TIM_OutputState_Enable; //使能输出状态TIM_OC1Init(TIM3,&TIM_OCInittim3); //初始化以上参数TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); //使能输出比较TIM_OCInittim3.TIM_OCMode=TIM_OCMode_PWM2; //选择我PWM2模式输出TIM_OCInittim3.TIM_OCPolarity=TIM_OCPolarity_High; //高电平有效TIM_OCInittim3.TIM_Pulse = 0; //设置初始比较值为0TIM_OCInittim3.TIM_OutputState=TIM_OutputState_Enable; //使能输出状态TIM_OC2Init(TIM3,&TIM_OCInittim3); //初始化以上参数TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); //使能输出比较TIM_OCInittim3.TIM_OCMode=TIM_OCMode_PWM2;TIM_OCInittim3.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OCInittim3.TIM_Pulse = 0;TIM_OCInittim3.TIM_OutputState=TIM_OutputState_Enable;TIM_OC3Init(TIM3,&TIM_OCInittim3);TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);TIM_OCInittim3.TIM_OCMode=TIM_OCMode_PWM2;TIM_OCInittim3.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OCInittim3.TIM_Pulse = 0;TIM_OCInittim3.TIM_OutputState=TIM_OutputState_Enable;TIM_OC4Init(TIM3,&TIM_OCInittim3);TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM3,ENABLE);TIM_Cmd(TIM3,ENABLE);
}
个人见解,感谢阅读。
STM32F103-TIM3 4路PWM波输出相关推荐
- STM32F103单片机生成16路PWM波
单片机输出pwm波在项目中是恨常用的一个功能,今天就总结一下用STM32F103C8T6单片机输出16路 pwm波. 使用keil5软件,用标准库函数来实现. 首先看定时器初始化 void TIM1_ ...
- STM8学习笔记---定时器输出7路PWM波
STM8S003F3P6单片机共有三个定时器定时器1.定时器2.定时器4.其中定时器1为16位高级定时器,定时器2为16位通用定时器,定时器4为8位基本定时器.定时器1和定时器2可以输出PWM波.其中 ...
- STM32学习日记3---定时器TIM3重映射PWM波呼吸灯实验
文章目录 1. 代码 关于PWM波的输出,我们需要用到定时器的4个通道(通用定时器和高级定时器有,基本定时器没有这4个通道)里面的PWM生成.然后查看数据手册,了解定时器的重映射引脚情况.所以配置时, ...
- STM32一个定时器同时捕获4路PWM波
问题的提出: 最近需要用航模遥控器控制遥控车,32单片机做主控,需要用到4个通道即需要捕获4路PWM波.如果用四个定时器来捕获四路PWM波,就太浪费资源了.由于STM32单片机的定时器资源有限,故设想 ...
- 【STC15】3路PWM波形输出示例演示
[STC15]3路PWM波形输出示例演示 本示例采用的是STC官方所给的<STC15系列库函数与例程测试版V2.0>里面的示例程序,测试的芯片型号:STC15W408AS.自制的开发板,采 ...
- BLE芯片PHY6222---两路PWM互补输出
文章目录 前言 处理 前言 两路PWM驱动电机,一定情况下PHY6222存在复位且电机控制力度不足 两路PWM波形输出理应为异步,原因在于采用了定时不断开启,关闭,长时间运行会导致定时精度不准确,导致 ...
- 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出
文章目录 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出 简介 CubeMX-TIM配置详情 单通道双路 PWM 互补输出配置 参数配置 时钟配置 工程管理 修改代码 基于Cu ...
- FreeRTOS基础(二):STM32G4系列运行FreeRTOS驱动8路PWM波控制多个路舵机
一.TIM2和TIM3配置,基于STM32CubeMX HCLK主时钟配置成72MHz 二.8路PWM初始化配置,50Hz PWM输出 注意:添加启动命令 /* TIM2 init function ...
- STM32CubeMX—PWM波输出实验
定时器PWM波实验 实验说明 芯片:STM32F103RCT6 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度. 实验操作 1.基础配置 1)sys中,选好调试方式,例如jtag-4pi ...
最新文章
- elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题
- 64位windows驱动使用asm
- 华为交换机重置命令(reset saved-configuration)
- 概率论与数理统计の笔记
- redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明
- Windows下solr的安装与部署
- 《中国人工智能学会通讯》——4.7 当前研究热点
- ImportError: cannot import name 'is_string_like'
- jenkins执行本地/远程shell脚本
- 毕设题目:Matlab机器人路径规划
- HardLink SymbolLink Junctions
- 个人信用风险评估项目
- 5财务分析的基本方法-盈利能力分析
- Java入门第三季—简易扑克牌游戏
- 【洛谷】P1359 租用游艇
- python程序设计基础之turtle库制作简单的小图片
- Windows下cmd进入MySql的命令界面
- php 商品多规格的实现,sku实现
- 【论文翻译_自监督知识蒸馏】Self-supervised Label Augmentation via Input Transformations
- 企业为什么需要B2B电商系统
热门文章
- 高性能平台设计——美团旅行结算平台实践
- 昌乐一中2021年高考成绩查询,喜 报
- 设置GPU及显存大小
- Linux命令之远程下载命令:wget
- matlab计算sinx近似值,《Matlab与数学实验》期末作业
- 合格的数据分析师需要具备哪些能力?
- ⭐算法入门⭐《动态规划 - 串匹配》困难02 —— LeetCode 72. 编辑距离
- 云服务器搭建全过程(阿里云、腾讯云等...通用)
- putty小键盘输入_putty或xshell上用vi/vim小键盘无法使用的解决方法-阿里云开发者社区...
- 带你了解什么是Nginx(实操反向代理-负载均衡)