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

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

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

STM32_ TIM輸出PWM波形

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-04-08 11:09 ? 次閱讀

前言

今天講解“STM32F103 TIM輸出PWM波形”,提供的軟件工程支持最大輸出18MHz的PWM波形,函數(shù)接口只有兩個(gè)參數(shù):頻率Freq和 占空比Dutycycle。

定時(shí)器的功能很強(qiáng)大,今天講解的PWM屬于定時(shí)器中比較輸出的功能,難度算一般吧(懂了的人覺得很簡(jiǎn)單),因?yàn)槭褂昧吮容^的功能。

PWM在實(shí)際應(yīng)用中特別廣泛,可能在校的學(xué)生不是很了解,但對(duì)于很多工作的人來說PWM的應(yīng)用基本上遍布整個(gè)電子化的時(shí)代。對(duì)于電子相關(guān)專業(yè)的學(xué)生來說,信號(hào)發(fā)生器都不陌生,信號(hào)發(fā)生器就是PWM典型的應(yīng)用。

本文特點(diǎn):1.提供講解的軟件工程; 2.圖片代碼比直接貼出源代碼容易閱讀。

本著免費(fèi)分享的原則,將講解的工程源代碼分享給大家,還望看到的朋友關(guān)注一下微信公眾號(hào),并將文章分享給你的朋友。

下載

提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒問題才上傳至360云盤。

今天的軟件工程下載地址(360云盤):

https://yunpan.cn/cSftz7gAJFujm訪問密碼 5132

STM32F10x的資料可以在我360云盤下載:

https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90

內(nèi)容講解

工程概要說明: 今天配置定時(shí)器2通道1輸出PWM波形(PA0口輸出1KHz、20%占空比),可根據(jù)情況修改其他TIM、其他通道。

注意:最大頻率和占空比有一定關(guān)系。

占空比等于1%時(shí), 最大頻率為360KHz

占空比等于50%時(shí),最大頻率為18MHz

關(guān)于“STM32F103TIM輸出PWM波形”我把重要的幾點(diǎn)在下面分別講述:

一、RCC時(shí)鐘配置

該函數(shù)位于bsp.c文件下面;

使能RCC時(shí)鐘:RCC_APB2Periph_AFIO和 RCC_APB1Periph_TIM2;

這兩個(gè)時(shí)鐘是今天工程中重要的。

二、PWM輸出引腳

該函數(shù)位于timer.c文件下面;

配置PA0為PWM輸出引腳(這里的引腳需要和定時(shí)器的通道對(duì)應(yīng),否則沒有波形輸出),詳情請(qǐng)看數(shù)據(jù)手冊(cè)關(guān)于引腳的說明。

三、輸出PWM配置


該函數(shù)位于timer.c文件下面;

決定輸出頻率和占空比主要由這三個(gè)參數(shù)(TIM2_PRESCALER_VALUE、tim2_period、tim2_pulse)決定的。

以今天工程輸出1KHz,20%來舉例說明:

TIM2_PRESCALER_VALUE = 72M / 36M - 1 = 1

tim2_period = 36000 - 1

tim2_pulse = 7200

這三個(gè)怎么得來的請(qǐng)看代碼,今天工程輸出的波形如下圖:

四、今天的重點(diǎn)提示

A.細(xì)心研究過代碼的人會(huì)發(fā)現(xiàn)TIM_OCMode_PWM1,還有一個(gè)TIM_OCMode_PWM2,這兩個(gè)的區(qū)別是什么呢? 答案是:輸出的極性(也就是方向)不一樣。

這時(shí)候又有人問:那下面的輸出極性TIM_OCPolarity_High與上面的關(guān)系是什么呢?答案是:這兩個(gè)參數(shù)配合一起輸出決定PWM波形的極性。

也就是說不同參數(shù)可以達(dá)到一樣的效果,下圖參數(shù)的配置同樣可以輸出一樣的波形。

感興趣的朋友可以試著修改測(cè)試一下效果。

B.今天的工程可以設(shè)置周期性中斷(也就是1ms中斷一次),感興趣的朋友可以試著寫一下。使用串口打印測(cè)試的話,盡量頻率低一點(diǎn),不然串口響應(yīng)不過來。

說明

今天提供的軟件工程基于STM32F103大容量芯片,其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1的芯片都適用。

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

    關(guān)注

    114

    文章

    5196

    瀏覽量

    214388
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356787
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    17920
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PWM波形的特性與優(yōu)化

    PWM波形的特性 1. 定義與基本原理 PWM是一種通過改變脈沖寬度來控制輸出電壓或電流的技術(shù)。在PWM信號(hào)中,一個(gè)周期內(nèi),脈沖的高電平(O
    的頭像 發(fā)表于 11-29 09:13 ?580次閱讀

    PWM輸出配置方法

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

    使用STM32CubeMX輸出PWM,并制作呼吸燈效果

    概述 本篇文章主要介紹如何使用STM32CubeMX輸出PWM,并制作呼吸燈效果。 硬件準(zhǔn)備 首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板: 選擇芯片型號(hào) 配置時(shí)鐘源
    發(fā)表于 09-04 10:38

    pwm與spwm波,載波、參考波與輸出波形的關(guān)系

    PWM(Pulse Width Modulation,脈沖寬度調(diào)制)與SPWM(Sinusoidal PWM,正弦脈沖寬度調(diào)制)波是電力電子領(lǐng)域中常用的兩種調(diào)制技術(shù),它們?cè)谳d波、參考波與輸出
    的頭像 發(fā)表于 08-14 16:58 ?2604次閱讀

    GD32E230C8T6高級(jí)定時(shí)器timer0無法正常輸出PWM波形的原因?

    原本想用高級(jí)定時(shí)器的中央對(duì)齊計(jì)數(shù)模式來輸出SPWM波,但是TIMER0的CH0,CH1等口,都無法正常輸出PWM波形,換成普通定時(shí)器就可以了,STM
    發(fā)表于 07-26 06:34

    STM32F407 PWM輸出時(shí)一次中斷未執(zhí)行完下一次中斷就進(jìn)入,導(dǎo)致PWM波形輸出紊亂怎么解決?

    為1KHz,波形不錯(cuò)亂,大于10KHz,錯(cuò)亂現(xiàn)象逐漸嚴(yán)重。 現(xiàn)在我的中斷處理函數(shù)運(yùn)行時(shí)間大概在1us左右,因此我覺得對(duì)于1MHz的PWM輸出是有問題的。所以向各位STM32的前輩請(qǐng)教一
    發(fā)表于 04-18 07:45

    cubemx設(shè)置TIM1 CH1N PWM波形沒有輸出的原因?

    時(shí)鐘內(nèi)部48M,48分頻后得到1us,周期250us,占空比125us。main函數(shù)中調(diào)用HAL PWM START,實(shí)際沒有輸出,TIM3的PWM
    發(fā)表于 04-12 08:09

    stm32f103 TIM2 PWM為什么沒有輸出?

    以前用TIM8輸出2路PWM正常,現(xiàn)在改為TIM2卻沒有輸出,對(duì)照datasheet寄存器詳細(xì)查了遍,沒看出問題。先貼出了主要代碼,哪位能看
    發(fā)表于 04-11 07:07

    STM32F429的TIM4定時(shí)器輸出四路PWM,為什么第四路PB9一直輸出低電平?

    芯片型號(hào):STM32F429ZGT6 用TIM4輸出4路PWM,用的是PB6PB7PB8PB9程序是一樣的配置,前三路都有PWM
    發(fā)表于 04-03 07:43

    STM32L0使用延時(shí)函數(shù)使PWM波形移相,延時(shí)函數(shù)不起作用的原因?

    使用的是STM32L0系列,準(zhǔn)備使用延時(shí)函數(shù)使PWM波形移相,現(xiàn)在延時(shí)函數(shù)不起作用 delay.c函數(shù)如下: //us void delay_us(uint32_t nus) { uint32_t
    發(fā)表于 03-21 06:23

    STM32G431CBT6使用LL_TIM_SetRepetitionCounter()更新TIM8的RCR寄存器,無法更改PWM輸出的個(gè)數(shù),為什么?

    如題,使用STM32CubeMX初始化,RCR寄存器設(shè)置為20-1,TIM8設(shè)置為單脈沖模式;進(jìn)入程序后使用LL_TIM_SetRepetitionCounter(TIM8, 10-1
    發(fā)表于 03-21 06:09

    STM32H723ZG TIM23 PWM不能中心對(duì)齊和down模式是什么原因呢?

    求助各位大神! 用的是STM32H723ZG,用cubeMx生產(chǎn)代碼,TIM8和TIM23采用相同的配置,如下圖,但是TIM8的PWM
    發(fā)表于 03-19 06:45

    STM32F051C8 PA0不能以DMA的方式輸出PWM,沒有正確波形輸出是哪里出了問題?

    ,新建工程,選擇型號(hào)STM32F051C8; 選擇內(nèi)部時(shí)鐘,配置時(shí)鐘為48Mhz, 配置TIM2 CH1為DMA PWM輸出; 生成代碼后,加入WS2812b的應(yīng)用代碼;在m
    發(fā)表于 03-13 06:20

    STM32U575 pwm和DMA輸出波形少一段怎么處理?

    這是我的 DMA 的配置 這是我的PWM配置 上面的波形是F103輸出波形。 下面的波形是U575
    發(fā)表于 03-13 06:10

    stm32f303RE PWM輸出波形變形的原因?

    我使用stm32 nucleo開發(fā)板,使用TIM3 CH4輸出PWM方波,發(fā)現(xiàn)波形變形,整個(gè)工程只有這個(gè)
    發(fā)表于 03-08 08:12