18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過(guò)STM32的定時(shí)器輸出PWM?

GReq_mcu168 ? 來(lái)源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2021-02-20 15:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文將介紹通過(guò)STM32定時(shí)器輸出PWM,如果對(duì)定時(shí)器不太熟悉的同學(xué)可以看下之前的文章《STM32基礎(chǔ)定時(shí)器詳解》,關(guān)于定時(shí)器的基礎(chǔ)功能不再詳解。

01 PWM介紹

PWM定義:脈沖寬度調(diào)制(PulseWidthModulation,PWM)簡(jiǎn)稱脈寬調(diào)制。通俗講,PWM是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法。通過(guò)高分辨率計(jì)數(shù)器的使用,方波的占空比被調(diào)制用來(lái)對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電要么完全有(ON),要么完全無(wú)(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時(shí)候即是直流供電被加到負(fù)載上的時(shí)候,斷的時(shí)候即是供電被斷開的時(shí)候。只要帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。

占空比定義:占空比就是高電平所占整個(gè)周期的時(shí)間,如下圖所示:

95afdcb2-71b8-11eb-8b86-12bb97331649.png

第一個(gè)PWM波,周期為10ms,高電平的時(shí)間為4ms,所以占空比為40%,同理第二個(gè)PWM波為60%,第三個(gè)為80%。

PWM的頻率:PWM的頻率的整個(gè)周期的倒數(shù),所以說(shuō)上圖PWM的周期為1/0.01,也就是100HZ。改變PWM的頻率是通過(guò)改變整個(gè)的周期實(shí)現(xiàn)的。所以通過(guò)改變高低電平總共的時(shí)間、改變高電平占總周期的比例就可以實(shí)現(xiàn)任意頻率、任意占空比的PWM波。

PWM的用途和優(yōu)點(diǎn):電機(jī)調(diào)速、功率調(diào)制、PID調(diào)節(jié)、通信等等,配置簡(jiǎn)單、抗干擾能力強(qiáng),從處理器到被控系統(tǒng)信號(hào)都是數(shù)字形式的,無(wú)需進(jìn)行數(shù)模轉(zhuǎn)換。并且讓信號(hào)保持為數(shù)字形式可將噪聲影響降到最小,噪聲只有在強(qiáng)到足以將邏輯1改變?yōu)檫壿?或?qū)⑦壿?改變?yōu)檫壿?時(shí),也才能對(duì)數(shù)字信號(hào)產(chǎn)生影響,這是PWM用于通信的主要原因。

02 STM32的管腳復(fù)用

STM32沒有專門的PWM引腳,所以使用IO口的復(fù)用模式。首先確認(rèn)PWM功能的輸出管腳,使用定時(shí)器9。從下面的框圖中得知,timer9只有兩個(gè)輸出通道,所以timer9只能輸出兩路PWM。

95e68672-71b8-11eb-8b86-12bb97331649.png

在STM32F207數(shù)據(jù)手冊(cè)中的Alternatefunction mapping圖片中,timer9的兩個(gè)通道分別可以復(fù)用為PA2,PA3,PE5和PE6。

96411fa6-71b8-11eb-8b86-12bb97331649.png

03 STM32輸出PWM原理

下圖中的①部分,在《STM32基礎(chǔ)定時(shí)器詳解》講解過(guò)了,關(guān)于影子寄存器,也在《STM32影子寄存器》中講述,下文不再贅述了。本文將重點(diǎn)在②部分,捕獲/對(duì)比通道講解,其中STM32的PWM就是利用對(duì)比通道實(shí)現(xiàn)的。

969111aa-71b8-11eb-8b86-12bb97331649.png

Pulse Width Modulation mode allows you to generate a signal with afrequency determined by the value of the TIMx_ARR register and a dutycycle determined by the value of the TIMx_CCRx register。 節(jié)選自STM32F207 Reference manual手冊(cè)

脈沖寬度調(diào)制模式可以生成一個(gè)信號(hào),該信號(hào)頻率由TIMx_ARR 寄存器值決定,其占空比則由TIMx_CCRx 寄存器值決定。

從下圖可以看出,當(dāng)CCR寄存器和CNT計(jì)數(shù)器數(shù)值一樣時(shí),會(huì)產(chǎn)生動(dòng)作(改變通道對(duì)應(yīng)的GPIO電平)。由于CNT溢出時(shí),重載值由TIMx_ARR寄存器值決定的。所以說(shuō)TIMx_ARR寄存器值決定周期,而TIMx_CCRx寄存器值決定CNT溢出時(shí),經(jīng)過(guò)多久會(huì)產(chǎn)生動(dòng)作(改變通道對(duì)應(yīng)的GPIO電平),也就是決定了占空比。

96f613de-71b8-11eb-8b86-12bb97331649.png

以向上計(jì)數(shù)為例,重載值為ARR,比較值為CRRx

9738d9d0-71b8-11eb-8b86-12bb97331649.png

上圖可以看出:

0-t1段,定時(shí)器計(jì)數(shù)器TIMx_CNT值小于CCRx值,輸出低電平。

t1-t2段,定時(shí)器計(jì)數(shù)器TIMx_CNT值大于CCRx值,輸出高電平。

當(dāng)TIMx_CNT值達(dá)到ARR時(shí),定時(shí)器溢出,重新向上計(jì)數(shù)...循環(huán)此過(guò)程至此一個(gè)PWM周期完成。

上圖更加形象的說(shuō)明了

信號(hào)頻率由TIMx_ARR 寄存器值決定。

占空比則由TIMx_CCRx 寄存器值決定。

STM32輸出PWM的過(guò)程:

1、首先配置GPIO,配置定時(shí)器,具體參考一下代碼。定時(shí)器配置參考《STM32基礎(chǔ)定時(shí)器詳解》。

2、捕獲/比較通道使能比較通道。

977125f6-71b8-11eb-8b86-12bb97331649.png

上圖看到,①寄存器名字為:Capture/Compare1register??梢赃x擇從②處輸入捕獲,也可以選擇從從③中輸出,也就是我們需要的PWM輸出功能。選擇捕獲通道,還是選擇比較通道,在框圖中沒有找到具體的說(shuō)明,但在TIMx_CCMR1寄存器CC1S[1:0]控制位使能。

97b8c3c0-71b8-11eb-8b86-12bb97331649.png

3、使能完輸出,就要配置PWM輸出了

a78b464c-71b8-11eb-8b86-12bb97331649.png

①TIMx_CCMR1寄存器的OC1M[2:0]位,設(shè)置輸出模式控制器

110:PWM模式1,111:PWM模式2。

②計(jì)數(shù)器值TIMx_CNT與通道1捕獲比較寄存器CCR1進(jìn)行比較,通過(guò)比較結(jié)果輸出有效電平和無(wú)效電平。

OC1REF=0 無(wú)效電平,OC1REF=1無(wú)效電平。

③通過(guò)輸出模式控制器產(chǎn)生的信號(hào)。TIMx_CCER寄存器的CC1P位,設(shè)置輸入/捕獲通道1輸出極性。

0:高電平有效,1:低電平有效。

④TIMx_CCER:CC1E位控制輸出使能電路,信號(hào)由此輸出到對(duì)應(yīng)引腳。

0:關(guān)閉,1:打開。

首先對(duì)PWM模式1和PWM模式2進(jìn)行介紹:

01 模式1

在向上計(jì)數(shù)時(shí),一旦TIMx_CNTTIMx_CCR1時(shí)通道1為無(wú)效電平(OC1REF=0),否則為有效電平(OC1REF=1)。

02 模式2

在向上計(jì)數(shù)時(shí),一旦TIMx_CNTTIMx_CCR1時(shí)通道1為有效電平,否則為無(wú)效電平。

TIMx_CNT>TIMx_CCR1時(shí)通道1為有效電平,否則為無(wú)效電平。

PWM輸出高低電平由TIMx_CCMR1:OC1M位和TIMx_CCER:CC1P位共同決定。

總結(jié)下來(lái):

模式1:

CNT

CNT>CCR為無(wú)效電平//(OC1REF =0)

模式2:

CNT

CNT>CCR為有效電平//(OC1REF =1)

CC1P:

0:高電平有效

1:低電平有效

04 STM32輸出PWM配置

分析了原理,那么下面就分析STM32生成PWM的過(guò)程。

1、首先要將GPIO設(shè)置為復(fù)用輸出

/* GPIOE clock enable */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE); /* GPIOE Configuration: TIM9 CH2(PE6)*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 |GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_OType =GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOE, &GPIO_InitStructure); /*Connect TIM9 pins to AF3 */ GPIO_PinAFConfig(GPIOE,GPIO_PinSource5, GPIO_AF_TIM9);GPIO_PinAFConfig(GPIOE,GPIO_PinSource6, GPIO_AF_TIM9);

2、配置定時(shí)器向上計(jì)數(shù),配置定時(shí)器頻率

/* TIM9 clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE); /* Compute the prescaler value */PrescalerValue= (uint16_t) ((SystemCoreClock) / 2000000) - 1; /* Timebase configuration */TIM_TimeBaseStructure.TIM_Period =1000-1;TIM_TimeBaseStructure.TIM_Prescaler =PrescalerValue;TIM_TimeBaseStructure.TIM_ClockDivision =0;TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; TIM_TimeBaseInit(TIM9,&TIM_TimeBaseStructure);3、配置PWM輸出 上面分析過(guò)程較為麻煩,ST提供了標(biāo)準(zhǔn)外設(shè)庫(kù),我們只需要配置TIM_OCInitTypeDef結(jié)構(gòu)體即可。

TIM_OCInitTypeDef TIM_OCInitStructure; /* PWM Modeconfiguration: Channel1 */TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse =100-1;TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; TIM_OC1Init(TIM9,&TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM9,TIM_OCPreload_Enable);

TIM_OCInitTypeDef結(jié)構(gòu)體解析

typedef struct{ uint16_t TIM_OCMode; //PWM模式1或者模式2 uint16_t TIM_OutputState; // 輸出使能OR失能 uint16_t TIM_OutputNState; // PWM輸出不需要 uint32_t TIM_Pulse; // 比較值 uint16_t TIM_OCPolarity;// 比較輸出極性 uint16_t TIM_OCNPolarity; // PWM輸出不需要 uint16_t TIM_OCIdleState;// PWM輸出不需要 uint16_t TIM_OCNIdleState; // PWM輸出不需要}TIM_OCInitTypeDef;

其中TIM_Pulse可以在初始化時(shí)設(shè)置,設(shè)置完畢后,也可以通過(guò)以下接口再次更新。

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1)

4、使能定時(shí)器

TIM_ARRPreloadConfig(TIM9, ENABLE); /* TIM9 enable counter*/TIM_Cmd(TIM9,ENABLE);

使用timer9輸出PWM的波形。

原文標(biāo)題:STM32 PWM輸出

文章出處:【微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5814

    瀏覽量

    222814
  • STM32
    +關(guān)注

    關(guān)注

    2301

    文章

    11084

    瀏覽量

    369785
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3349

    瀏覽量

    121141

原文標(biāo)題:STM32 PWM輸出

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SysTick系統(tǒng)滴答定時(shí)器簡(jiǎn)介

    SysTick—系統(tǒng)定時(shí)器是屬于CM33內(nèi)核中的一個(gè)外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時(shí)器是一個(gè)24bit的向下遞減的計(jì)數(shù),計(jì)數(shù)每計(jì)數(shù)一次的時(shí)間為 1/SYSCLK,一般我們?cè)O(shè)置系統(tǒng)時(shí)
    的頭像 發(fā)表于 09-23 09:50 ?1025次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時(shí)器</b>簡(jiǎn)介

    定時(shí)器同步之并行模式

    事件作為 TRGOUT 源,用于觸發(fā)兩個(gè)從定時(shí)器。TMR3 和 TMR4 作為從定時(shí)器,開啟掛起模式用于與主定時(shí)器進(jìn)行同步。并且使能 TMR2_CH1,TMR3_CH1,TMR4_CH1 比較
    發(fā)表于 09-22 09:56

    【RA4M2-SENSOR】3、使用GPT定時(shí)器-PWM輸出

    結(jié)合起來(lái)使用的話可以實(shí)現(xiàn)更加豐富的功能, 可以對(duì)輸入信號(hào)進(jìn)行計(jì)數(shù),可以測(cè)量輸入信號(hào)的脈沖寬度,可以輸出單個(gè)脈沖、PWM 等波形,等等。 通過(guò)定時(shí)器生成
    發(fā)表于 09-01 15:20

    大彩講堂:VisualHMI-LUA教程-定時(shí)器的使用指南

    定時(shí)器的使用
    的頭像 發(fā)表于 08-31 16:59 ?704次閱讀
    大彩講堂:VisualHMI-LUA教程-<b class='flag-5'>定時(shí)器</b>的使用指南

    基于 AS32X601 微控制定時(shí)器模塊(TIM)技術(shù)研究與應(yīng)用實(shí)踐

    闡述了高級(jí)定時(shí)器和通用定時(shí)器的計(jì)數(shù)精度、預(yù)分頻可編程性,以及輸入捕獲、輸出比較、PWM生成等
    的頭像 發(fā)表于 08-19 16:44 ?482次閱讀

    第二十二章 TIM——高級(jí)定時(shí)器

    本章介紹了W55MH32的高級(jí)定時(shí)器(TIM1和TIM8),其含時(shí)基單元等,具備輸入捕獲、輸出比較、PWM生成等功能,還支持互補(bǔ)輸出、死區(qū)插入等,適用于工業(yè)電機(jī)控制,也提及相關(guān)配置結(jié)構(gòu)
    的頭像 發(fā)表于 06-20 13:58 ?1250次閱讀
    第二十二章 TIM——高級(jí)<b class='flag-5'>定時(shí)器</b>

    第二十一章 TIM——通用定時(shí)器

    本篇文章介紹了W55MH32的通用定時(shí)器(TIM2~TIM5等),其由16位自動(dòng)裝載計(jì)數(shù)和可編程預(yù)分頻構(gòu)成,具備輸入捕獲、輸出比較、PWM
    的頭像 發(fā)表于 06-20 13:57 ?1229次閱讀
    第二十一章 TIM——通用<b class='flag-5'>定時(shí)器</b>

    MCU定時(shí)器/計(jì)數(shù)

    架構(gòu)與功能特性? 定時(shí)器類型與配置? 高級(jí)控制定時(shí)器?:支持互補(bǔ)PWM輸出與剎車功能,適用于電機(jī)驅(qū)動(dòng)等高精度控制場(chǎng)景。通用定時(shí)器?:集成輸入
    的頭像 發(fā)表于 04-27 13:54 ?500次閱讀

    瑞薩RA8D1單片機(jī)輸出PWM實(shí)現(xiàn)方法

    也有通過(guò)定時(shí)器中斷控制IO高低電平輸出實(shí)現(xiàn)的。
    的頭像 發(fā)表于 04-11 17:07 ?3550次閱讀
    瑞薩RA8D1單片機(jī)<b class='flag-5'>輸出</b><b class='flag-5'>PWM</b>實(shí)現(xiàn)方法

    使用stm32f405做6步pwm輸出時(shí),定時(shí)器配置由強(qiáng)制輸出轉(zhuǎn)為pwm,com觸發(fā)后會(huì)有延遲生效的現(xiàn)象,怎么解決?

    我在使用stm32f405做6步pwm輸出時(shí)發(fā)現(xiàn),定時(shí)器的配置由pwm改為強(qiáng)制輸出后會(huì)在com觸
    發(fā)表于 03-13 07:24

    如何使用定時(shí)器在任意IO輸出PWM?

    在CubeMx內(nèi)的配置,計(jì)劃在PA2口輸出PWM控制風(fēng)機(jī),但是TIM2已經(jīng)初始化做輸入捕獲用了,因此需要用到別的未使用的定時(shí)器在PA2口輸出PWM
    發(fā)表于 03-13 06:04

    stm32同一個(gè)定時(shí)器不同的通道,可以不同時(shí)的輸出pwm波形嗎?

    請(qǐng)問(wèn),stm32的同一個(gè)定時(shí)器,不同的通道,可以不同時(shí)的輸出pwm波形嗎?比如tim1的ch1輸出,延時(shí)幾毫秒后tim1的ch2
    發(fā)表于 03-07 08:20

    詳解CKS32F107xx系列的定時(shí)器同步功能

    我們將圍繞定時(shí)器同步功能概述展開,并以其中一種功能為例——將定時(shí)器2給定時(shí)器3當(dāng)預(yù)分頻,最終級(jí)聯(lián)同步PWM
    的頭像 發(fā)表于 11-26 17:51 ?1300次閱讀
    詳解CKS32F107xx系列的<b class='flag-5'>定時(shí)器</b>同步功能

    高級(jí)定時(shí)器PWM輸入模式的配置方法

    我們將向大家介紹高級(jí)定時(shí)器的另一個(gè)常見應(yīng)用——PWM輸入模式。在本節(jié)課中,我們將先圍繞輸入捕獲模式展開,并重點(diǎn)描述PWM輸入模式和涉及的寄存,最后
    的頭像 發(fā)表于 11-08 16:48 ?5033次閱讀
    高級(jí)<b class='flag-5'>定時(shí)器</b><b class='flag-5'>PWM</b>輸入模式的配置方法

    PWM輸出配置方法

    從上節(jié)課的定時(shí)器分類圖中我們了解到,互補(bǔ)輸出是高級(jí)定時(shí)器(TIM1、TIM8)所獨(dú)有的,它可以輸出兩路互補(bǔ)信號(hào)。而在本節(jié)課中我們將通過(guò)一個(gè)簡(jiǎn)
    的頭像 發(fā)表于 11-04 09:44 ?3677次閱讀
    <b class='flag-5'>PWM</b><b class='flag-5'>輸出</b>配置方法