www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一。 PWM簡(jiǎn)介脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫(xiě),簡(jiǎn)稱(chēng)脈寬調(diào)制,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單一點(diǎn),就是對(duì)脈沖寬度的控制。STM32 的定時(shí)器除了

一。 PWM簡(jiǎn)介

脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫(xiě),簡(jiǎn)稱(chēng)脈寬調(diào)制,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單一點(diǎn),就是對(duì)脈沖寬度的控制。

STM32 的定時(shí)器除了 TIM6 和 7。其他的定時(shí)器都可以用來(lái)產(chǎn)生 PWM 輸出。其中高級(jí)定時(shí)器 TIM1 和 TIM8 可以同時(shí)產(chǎn)生多達(dá) 7 路的 PWM 輸出。而通用定時(shí)器也能同時(shí)產(chǎn)生多達(dá) 4路的 PWM 輸出,這樣,STM32 最多可以同時(shí)產(chǎn)生 30 路 PWM 輸出。

這里我們僅利用TIM3的 CH2產(chǎn)生一路 PWM 輸出。




對(duì)于每個(gè)通道都有一個(gè)捕獲比較寄存器CCRx,CCRx中的值與計(jì)數(shù)器TIMx_CNT中的值進(jìn)行比較。

PWM信號(hào)的周期由Arr的值以及計(jì)數(shù)器的頻率決定,占空比由CCRx中的值決定。

二。PWM模式


輸出模式控制器由CCMR1控制(以通道1為例)。

脈沖寬度調(diào)制模式可以產(chǎn)生一個(gè)由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號(hào)。



PWM模式1:

不管向上計(jì)數(shù)還是向下計(jì)數(shù),只要計(jì)數(shù)值CNTCC1P位決定的,設(shè)置為0是高電平有效,設(shè)置為1是電平有效。

在TIMx_CCMRx寄存器中的OCxM位寫(xiě)入’110’(PWM模式1)或’111’(PWM模式2),能夠獨(dú)立地設(shè)置每個(gè)OCx輸出通道產(chǎn)生一路PWM。必須設(shè)置TIMx_CCMRx寄存器OCxPE位以使能相應(yīng)的預(yù)裝載寄存器,最后還要設(shè)置TIMx_CR1寄存器的ARPE位,(在向上計(jì)數(shù)或中心對(duì)稱(chēng)模式中)使能自動(dòng)重裝載的預(yù)裝載寄存器。

向上計(jì)數(shù)配置

當(dāng)TIMx_CR1寄存器中的DIR位為低的時(shí)候執(zhí)行向上計(jì)數(shù)。

下面是一個(gè)PWM模式1的例子。TIMx_CCRx寄存器的值與計(jì)數(shù)器寄存器TIMx_CNT的值進(jìn)行比較。



三。三個(gè)寄存器

1. 捕獲 / 比較模式寄存器(TIMx_CCMR1/2)


寄存器分了 2層,上面一層對(duì)應(yīng)輸出而下面的則對(duì)應(yīng)輸入。這里我們用PWM的輸出。

每個(gè)通用定時(shí)器有4個(gè)PWM通道,通道1和通道2用CCMR1配置,通道3和通道4用CCMR2配置,這里我們用的是CH2,所以用CCMR1配置。

OC1M[2:0]:輸出比較1模式

110:PWM模式1-不管向上計(jì)數(shù)還是向下計(jì)數(shù),一旦TIMx_CNT

111:PWM模式2- 在向上計(jì)數(shù)時(shí),一旦TIMx_CNT>TIMx_CCR1時(shí)通道1為有效電平,否則為無(wú)效電平。

2.捕獲/比較使能寄存器(TIMx_CCER)

該寄存器控制著各個(gè)輸入輸出通道的開(kāi)關(guān)。


這里只用到了 CC2E 位,該位是輸入/捕獲 2 輸出使能位,要想PWM 從 IO 口輸出,這個(gè)位必須設(shè)置為 1。

3.捕獲/比較寄存器(TIMx_CCR1~4)

該寄存器總共有 4 個(gè),對(duì)應(yīng) 4 個(gè)輸通道 CH1~4。該寄存器中存儲(chǔ)著捕獲比較值CCRx。

在輸出模式下,該寄存器的值與 CNT 的值比較,根據(jù)比較結(jié)果產(chǎn)生相應(yīng)動(dòng)作。利用這點(diǎn),我們通過(guò)修改這個(gè)寄存器的值,就可以控制 PWM 的輸出脈寬了。

四。STM32的重映射

由于開(kāi)發(fā)板上的LED燈是掛在PB5上,所以需要用部分重映射使PWM輸出在PB5上。

STM32 的重映射控制是由復(fù)用重映射和調(diào)試 IO 配置寄存器(AFIO_MAPR)控制的。


這里用到的是 TIM3 的重映射,從上圖可以看出, TIM3_REMAP 是由[11:10]這 2 個(gè)位控制的。TIM3_REMAP[1:0]重映射控制表如表所示:


默認(rèn)條件下,TIM3_REMAP[1:0]為 00,是沒(méi)有重映射的,所以 TIM3_CH1~TIM3_CH4 分別是接在 PA6、PA7、PB0 和 PB1 上的,而我們想讓TIM3_CH2 映射到 PB5 上,則需要設(shè)置TIM3_REMAP[1:0]=10,即部分重映射,這里需要注意,此時(shí) TIM3_CH1 也被映射到 PB4 上了。

五。使用庫(kù)函數(shù)配置PWM輸出的步驟



1)開(kāi)啟 TIM3 時(shí)鐘以及復(fù)用功能時(shí)鐘,配置 PB5 為復(fù)用推挽輸出。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定時(shí)器 3 時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //復(fù)用時(shí)鐘使能

設(shè)置 PB5 為復(fù)用功能輸出的方法在前面的幾個(gè)實(shí)驗(yàn)都有類(lèi)似的講解,相信大家很明白,這里簡(jiǎn)單列出 GPIO 初始化的一行代碼即可:

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出



2)設(shè)置 TIM3_CH2 重映射到 PB5 上。

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);

TIM3 部分重映射的庫(kù)函數(shù)實(shí)現(xiàn)方法是:

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

3)初始化 TIM3,設(shè)置 TIM3 的 ARR 和 PSC。

在開(kāi)啟了 TIM3 的時(shí)鐘之后,我們要設(shè)置 ARR 和 PSC 兩個(gè)寄存器的值來(lái)控制輸出 PWM 的周期。當(dāng) PWM 周期太慢(低于 50Hz)的時(shí)候,我們就會(huì)明顯感覺(jué)到閃爍了。因此,PWM 周期在這里不宜設(shè)置的太小。

4)設(shè)置 TIM3_CH2 的 PWM 模式,使能 TIM3 的 CH2 輸出。


設(shè)置PWM輸出只需要設(shè)置紅色的部分。

在庫(kù)函數(shù)中,PWM 通道設(shè)置是通過(guò)函數(shù)TIM_OC1Init()~TIM_OC4Init()來(lái)設(shè)置的, 不同的通道的設(shè)置函數(shù)不一樣, 這里我們使用的是通道 2,所以使用的函數(shù)是 TIM_OC2Init()。

void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇 PWM 模式 2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性高

TIM_OC2Init(TIM3, &TIM_OCInitStructure); //初始化 TIM3 OC2

5)使能 TIM3。

先要使能TIM3在CCR2上的預(yù)裝載寄存器

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

TIM_Cmd(TIM3, ENABLE); //使能 TIM3

6)修改 TIM3_CCR2 來(lái)控制占空比。

實(shí)際上就是修改CCRx寄存器的值。通過(guò)修改 TIM3_CCR2 則可以控制 CH2 的輸出占空比。繼而控制 DS0 的亮度。

修改 TIM3_CCR2 占空比的函數(shù)是:

void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式開(kāi)發(fā)中,STM32的時(shí)鐘系統(tǒng)因其靈活性和復(fù)雜性成為開(kāi)發(fā)者關(guān)注的焦點(diǎn)。然而,看似簡(jiǎn)單的時(shí)鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時(shí)鐘源選擇、PLL配置、總線(xiàn)時(shí)鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時(shí)鐘系統(tǒng)

在嵌入式系統(tǒng)開(kāi)發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測(cè)等場(chǎng)景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動(dòng)下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革?;赟TM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動(dòng)態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

當(dāng)前智能家居產(chǎn)品需求不斷增長(zhǎng) ,在這一背景下 ,對(duì)現(xiàn)有澆花裝置缺陷進(jìn)行了改進(jìn) ,設(shè)計(jì)出基于STM32單片機(jī)的全 自動(dòng)家用澆花機(jī)器人。該設(shè)計(jì)主要由機(jī)械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機(jī)械結(jié)構(gòu)通過(guò)麥克納姆輪底盤(pán)與噴灑裝置的結(jié)合實(shí)現(xiàn)機(jī)器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過(guò)性強(qiáng)

用c++編程似乎是讓你的Arduino項(xiàng)目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個(gè)圖形化編程平臺(tái)將復(fù)雜電子項(xiàng)目的創(chuàng)建變成了拖動(dòng)和連接塊的簡(jiǎn)單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無(wú)線(xiàn)傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測(cè)、工業(yè)自動(dòng)化等場(chǎng)景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實(shí)現(xiàn)高效休眠調(diào)度與動(dòng)態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa

在實(shí)時(shí)控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對(duì)時(shí)間敏感的應(yīng)用場(chǎng)景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(wèn)(DMA)...

關(guān)鍵字: STM32 DMA

數(shù)字電源技術(shù)向高功率密度、高效率與高動(dòng)態(tài)響應(yīng)方向加速演進(jìn),STM32微控制器憑借其基于DSP庫(kù)的算法加速能力與對(duì)LLC諧振變換器的精準(zhǔn)控制架構(gòu),成為優(yōu)化電源動(dòng)態(tài)性能的核心平臺(tái)。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關(guān)鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對(duì)電機(jī)控制場(chǎng)景的深度優(yōu)化,成為高精度、高可靠性驅(qū)動(dòng)系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機(jī)控制領(lǐng)域的核心優(yōu)勢(shì)集中體現(xiàn)在FOC(磁場(chǎng)定向控制)算法的硬件加速引擎與PWM死區(qū)時(shí)間的動(dòng)態(tài)補(bǔ)...

關(guān)鍵字: STM32 電機(jī)控制

無(wú)線(xiàn)充電技術(shù)加速滲透消費(fèi)電子與汽車(chē)電子領(lǐng)域,基于Qi協(xié)議的無(wú)線(xiàn)充電發(fā)射端開(kāi)發(fā)成為智能設(shè)備能量補(bǔ)給的核心課題。傳統(tǒng)模擬控制方案存在響應(yīng)滯后、參數(shù)調(diào)整困難等問(wèn)題,而基于STM32的數(shù)字PID控制結(jié)合FOD(Foreign O...

關(guān)鍵字: STM32 無(wú)線(xiàn)充電
關(guān)閉