三篇文章看懂STM32-TIM定时器(2)超详细介绍及练习源码

  1. TIM输出比较功能

1)输出比较(OC)介绍

  • OC(Output Compare)输出比较

  • 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形

    • CNT --- 计数器

    • CCR --- 捕获比较寄存器

  • 每个高级定时器和通用定时器都拥有4个输出比较通道

  • 高级定时器的前3个通道额外拥有死区生成和互补输出的功能

2)PWM简介

  • PWM(Pulse Width Modulation)脉冲宽度调制

  • 具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域

3)输出比较通道

  1. 高级定时器(了解即可)

  1. 通用定时器

4)PWM的基本结构

5)舵机介绍

硬件电路

6)直流电机及驱动介绍

硬件电路

7)PWM驱动呼吸灯project

硬件接线图

代码
PWM.c模块代码
#include "stm32f10x.h"                  // Device header

/**
  * 函    数:PWM初始化
  * 参    数:无
  * 返 回 值:无
  */
void PWM_Init(void)
{
        /*开启时钟*/
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);                        //开启TIM2的时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);                        //开启GPIOA的时钟
        
        /*GPIO重映射*/
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);        //开启AFIO的时钟,重映射必须先开启AFIO的时钟
//        GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);       //将TIM2的引脚部分重映射,具体的映射方案需查看参考手册
//        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);    //将JTAG引脚失能,作为普通GPIO引脚使用
        
        /*GPIO初始化*/
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                //GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                     //将PA0引脚初始化为复用推挽输出        
                                                                                                                                        //受外设控制的引脚,均需要配置为复用模式                
        
        /*配置时钟源*/
        TIM_InternalClockConfig(TIM2);                //选择TIM2为内部时钟,若不调用此函数,TIM默认也为内部时钟
        
        /*时基单元初始化*/
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;              //定义结构体变量
        TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //时钟分频,选择不分频,此参数用于配置滤波器时钟,不影响时基单元功能
        TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器模式,选择向上计数
        TIM_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值