三.PWM

PWM原理

TIMx_APR寄存器 确定频率

TIMx_CCRx寄存器 确定占空比的信号

TIMx_ARR寄存器是自动重载值

占空比中占时指高电平持续的时间A,空是指低电平持续的时间B,占空比=A / (A + B)

PWM程序-控制小灯渐亮渐灭渐亮

注:小灯->PB5 以TIM3为计时器

TIM3计时器有四个通道,


图片.png

我们可以看到为了让小灯PB5端口输出PWM的电平,我们需要将TIM3的2通道部分重印象

1.将端口B使能为了小灯,将TIM3定时器使能,将时钟复用端口使能

    SystemInit();//将系统时钟打开
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//将B端口的时钟打开,方便打开小灯  
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//将TIM3的时钟打开
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//将功能复用时钟打开

2.配置B端口5管脚(小灯),使得其是复用推挽输出

//对小灯的B端口的5管脚进行使能
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//初始B端口的五号引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置时钟是50MHz
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//设置为复用推挽输出,以前LED小灯是推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure);

3.将定时器TIM3配置进行初始化

//设置定时器
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//百度说特殊场合有用,做一些延迟
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//设置向上计数模式
  TIM_TimeBaseStructure.TIM_Period = 899;//设置多少次循环一次 默认加1
  TIM_TimeBaseStructure.TIM_Prescaler = 0;//预分频,你这个数默认加1 ,现在是72MHZ,这个数会默认加1
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

4.进行部分重映射,将PWM的输出的端口映射到一个具体的端口

//端口映射
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);

5.将TIM3的通道2来进行初始化,来达到输出PWM的目的

    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//选择PWM的通道1
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//当比较符合条件,就输出低电位
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//给输出使能
    TIM_OC2Init(TIM3,&TIM_OCInitStructure);//TIM3的2通道初始化,上面已经进行了部分重映射,所以此时PWM输出的是PB5端口

6.开启TIM3的2通道的CCR寄存器预转载功能

TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);//使得在更新TIM3,2通道的CCR寄存器后,可以在下一个更新事件之后生效

7.打开定时器TIM3

    //打开定时器
    TIM_Cmd(TIM3,ENABLE);

配置已经成功,PB5管脚已经可以输出PWM波形,但是如何在主程序中使用?

使用TIM_SetCompare2(TIM3,400);//设置比较信号函数可以来设置比较信号,控制占空比。

//我的main函数,学习视频写的
    u8 led_fx = 1;
    u16 led_dt=0;
    RCC_Configuration();
    GPIO_Configuration();
    //NVIC_Configuration();
    TIM3_Configuration();
    while(1)
    {
        Delay_ms(10);
        if(led_fx == 1)
        {
            led_dt++;
        }
        else{
            led_dt--;
        }
        if(led_dt > 800) led_fx = 0;
        if(led_dt == 0)  led_fx = 1;
        
        TIM_SetCompare2(TIM3,led_dt);//设置比较信号
        
    }

PWM1模式和PWM2模式的区别

[PWM1&PWM2模式;输出极性高低的含义]

110:PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否
则为有效电平(OC1REF=1)。
111:PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电

输出比较极性的指的是你在比较匹配之后输出口输出的极性。
这个函数就是让你设置有效极性,也就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。
如果设置为高电平有效,那么当定时器比较匹配之后,输出口输出高电平,否则就反一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容