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

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);//初始化GPIOGPIO_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);//初始化GPIOTIM_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); //初始化TIM4TIM_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); //初始化TIM4TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//设置PWM模式1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能TIM_OCInitStructure.TIM_Pulse = 0; //TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性为高TIM_OC2Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH2TIM_OC3Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH3TIM_OC4Init(TIM2, &TIM_OCInitStructure);//初始化TIM2_CH4TIM_OC1Init(TIM3, &TIM_OCInitStructure);//初始化TIM3_CH1TIM_OC2Init(TIM3, &TIM_OCInitStructure);//初始化TIM3_CH2TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC1TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC2TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);//OC3   TIM_ARRPreloadConfig(TIM2, ENABLE); //使能重装寄存器TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//OC4TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//OC5TIM_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);

STM32F103系列PWM波相关推荐

  1. STM32F103输出互补PWM波

    STM32F103单片机定时器自带互补PWM波形输出功能,利用定时器输出比较模式,不仅可以输出互补的 PWM波,还可以设置输出方波的起始相位和死区时间. 下面就总结一下如何实现PWM互补输出. voi ...

  2. STM32F103 PA8不能输出PWM波问题

    在调试STM32F103单片机输出PWM波时,单独测试PA8和PA11输出PWM波(也就是TIM1_CH1和TIM1_CH4),输出PWM波正常.然后用串口1输出数据时,发现一个问题,串口输出正常,但 ...

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

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

  4. STM32F103输出多路死区互补PWM波

    TIM1,TIM8可以产生死区互补PWM波,学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考.Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定 ...

  5. STM32F103系列的单片机一共有11个定时器

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器 出去看门狗定时器和系统滴答定时器的八个定时器列表; 8个 ...

  6. STM32F103系列的单片机定时器

    STM32F103系列的单片机一共有11个定时器,且所有定时器的技数频率均为72MHZ,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器 出去看门狗定时器和 ...

  7. stm32单片机实现多个闹钟_基于STM32F103系列单片机的11个定时器解析

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器 除去看门狗定时器和系统滴答定时器的八个定时器列表; 8个 ...

  8. 使用STM8S003定时器的PWM功能输出PWM波

    一.使用定时器TIM2的CH1.CH2.CH3通道PWM输出 1. 在使用stm8s系列的单片机的时候,使用的头文件大部分都是通用的stm8s.,第一步修改头文件: /* Uncomment the ...

  9. STM32f103C8定时器输出PWM波信号

    利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...

  10. 软硬件兼容STM32F103系列的国产32位MCU

    介绍一款软硬件兼容STM32F103系列的国产32位MCU,此款32位MCU采用高性能ARM®Cortex®-M3 32位RISC内核,216兆赫兹频率运行,内置256KB的闪存和高达96KB的SRA ...

最新文章

  1. Axure--Web原型开发工具
  2. 【杂谈】手把手带你配置深度学习环境
  3. 微软向Linux社区开放60000多项专利:对开源微软是认真的
  4. C语言试题五十一之已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。
  5. 什么是AES算法?(整合版)
  6. win10宽带连接断网自动重连
  7. python 3.9特性,开发者应该知道的Python 3.9新特性
  8. python colormap_Matplotlib python更改colormap中的单色
  9. 强烈谴责中国红十字会
  10. 一步一步写算法(之克鲁斯卡尔算法 下)
  11. asp.net 打印控件之报表
  12. 串口连接设置超级终端管理交换机
  13. 结合Zemax浅谈几何光学和信息光学中的成像,孔径光阑,视场光阑
  14. 利用QQ邮箱设置个性域名邮箱,并在网易邮箱大师客户端添加域名邮箱
  15. 泰坦尼克号各种因素对存活率的影响
  16. 发明专利授权:顺源科技模拟信号隔离放大及转换技术
  17. 中心极限定理和Berry-Esseen中心极限定理
  18. 使用scp传输文件 Host key verification failed.解决
  19. 指纹录入和指纹解锁流程
  20. php extraxt,php中关于extract方法的使用和建议

热门文章

  1. IP6826无线充电底座方案IC芯片,兼容WPC Qi v1.2.4
  2. Tracert(traceroute)Ping 工作原理分析
  3. 2014年视频聊天室开发经验分享
  4. 从零开始用Kotlin结合Jetpack写一个五子棋
  5. php的md5(),PHP中MD5函数效率
  6. 抢红包案例分析附代码实现(一)
  7. python实习内容过程_实习报告
  8. 服务器性能测试 iometer 测试io
  9. 鲁棒控制——线性矩阵不等式处理(俞立)(1)
  10. python下stl格式转换off格式