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波输出相关推荐

  1. STM32F103单片机生成16路PWM波

    单片机输出pwm波在项目中是恨常用的一个功能,今天就总结一下用STM32F103C8T6单片机输出16路 pwm波. 使用keil5软件,用标准库函数来实现. 首先看定时器初始化 void TIM1_ ...

  2. STM8学习笔记---定时器输出7路PWM波

    STM8S003F3P6单片机共有三个定时器定时器1.定时器2.定时器4.其中定时器1为16位高级定时器,定时器2为16位通用定时器,定时器4为8位基本定时器.定时器1和定时器2可以输出PWM波.其中 ...

  3. STM32学习日记3---定时器TIM3重映射PWM波呼吸灯实验

    文章目录 1. 代码 关于PWM波的输出,我们需要用到定时器的4个通道(通用定时器和高级定时器有,基本定时器没有这4个通道)里面的PWM生成.然后查看数据手册,了解定时器的重映射引脚情况.所以配置时, ...

  4. STM32一个定时器同时捕获4路PWM波

    问题的提出: 最近需要用航模遥控器控制遥控车,32单片机做主控,需要用到4个通道即需要捕获4路PWM波.如果用四个定时器来捕获四路PWM波,就太浪费资源了.由于STM32单片机的定时器资源有限,故设想 ...

  5. 【STC15】3路PWM波形输出示例演示

    [STC15]3路PWM波形输出示例演示 本示例采用的是STC官方所给的<STC15系列库函数与例程测试版V2.0>里面的示例程序,测试的芯片型号:STC15W408AS.自制的开发板,采 ...

  6. BLE芯片PHY6222---两路PWM互补输出

    文章目录 前言 处理 前言 两路PWM驱动电机,一定情况下PHY6222存在复位且电机控制力度不足 两路PWM波形输出理应为异步,原因在于采用了定时不断开启,关闭,长时间运行会导致定时精度不准确,导致 ...

  7. 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出

    文章目录 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出 简介 CubeMX-TIM配置详情 单通道双路 PWM 互补输出配置 参数配置 时钟配置 工程管理 修改代码 基于Cu ...

  8. FreeRTOS基础(二):STM32G4系列运行FreeRTOS驱动8路PWM波控制多个路舵机

    一.TIM2和TIM3配置,基于STM32CubeMX HCLK主时钟配置成72MHz 二.8路PWM初始化配置,50Hz PWM输出 注意:添加启动命令 /* TIM2 init function ...

  9. STM32CubeMX—PWM波输出实验

    定时器PWM波实验 实验说明 芯片:STM32F103RCT6 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度. 实验操作 1.基础配置 1)sys中,选好调试方式,例如jtag-4pi ...

最新文章

  1. elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题
  2. 64位windows驱动使用asm
  3. 华为交换机重置命令(reset saved-configuration)
  4. 概率论与数理统计の笔记
  5. redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明
  6. Windows下solr的安装与部署
  7. 《中国人工智能学会通讯》——4.7 当前研究热点
  8. ImportError: cannot import name 'is_string_like'
  9. jenkins执行本地/远程shell脚本
  10. 毕设题目:Matlab机器人路径规划
  11. HardLink SymbolLink Junctions
  12. 个人信用风险评估项目
  13. 5财务分析的基本方法-盈利能力分析
  14. Java入门第三季—简易扑克牌游戏
  15. 【洛谷】P1359 租用游艇
  16. python程序设计基础之turtle库制作简单的小图片
  17. Windows下cmd进入MySql的命令界面
  18. php 商品多规格的实现,sku实现
  19. 【论文翻译_自监督知识蒸馏】Self-supervised Label Augmentation via Input Transformations
  20. 企业为什么需要B2B电商系统

热门文章

  1. 高性能平台设计——美团旅行结算平台实践
  2. 昌乐一中2021年高考成绩查询,喜 报
  3. 设置GPU及显存大小
  4. Linux命令之远程下载命令:wget
  5. matlab计算sinx近似值,《Matlab与数学实验》期末作业
  6. 合格的数据分析师需要具备哪些能力?
  7. ⭐算法入门⭐《动态规划 - 串匹配》困难02 —— LeetCode 72. 编辑距离
  8. 云服务器搭建全过程(阿里云、腾讯云等...通用)
  9. putty小键盘输入_putty或xshell上用vi/vim小键盘无法使用的解决方法-阿里云开发者社区...
  10. 带你了解什么是Nginx(实操反向代理-负载均衡)