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

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

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

STM32_ TIM輸出PWM波形

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

前言

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

定時器的功能很強大,今天講解的PWM屬于定時器中比較輸出的功能,難度算一般吧(懂了的人覺得很簡單),因為使用了比較的功能。

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

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

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

下載

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

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

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

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

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

內(nèi)容講解

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

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

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

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

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

一、RCC時鐘配置

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

使能RCC時鐘:RCC_APB2Periph_AFIO和 RCC_APB1Periph_TIM2;

這兩個時鐘是今天工程中重要的。

二、PWM輸出引腳

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

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

三、輸出PWM配置


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

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

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

TIM2_PRESCALER_VALUE = 72M / 36M - 1 = 1

tim2_period = 36000 - 1

tim2_pulse = 7200

這三個怎么得來的請看代碼,今天工程輸出的波形如下圖:

四、今天的重點提示

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

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

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

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

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

說明

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

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

    關(guān)注

    114

    文章

    5059

    瀏覽量

    212210
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

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

    關(guān)注

    0

    文章

    81

    瀏覽量

    17813
收藏 人收藏

    評論

    相關(guān)推薦

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

    概述 本篇文章主要介紹如何使用STM32CubeMX輸出PWM,并制作呼吸燈效果。 硬件準(zhǔn)備 首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板: 選擇芯片型號 配置時鐘源
    發(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ù),它們在載波、參考波與輸出
    的頭像 發(fā)表于 08-14 16:58 ?512次閱讀

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

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

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

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

    stm32f103 TIM2 PWM為什么沒有輸出?

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

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

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

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

    使用的是STM32L0系列,準(zhǔn)備使用延時函數(shù)使PWM波形移相,現(xiàn)在延時函數(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輸出的個數(shù),為什么?

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

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

    ,新建工程,選擇型號STM32F051C8; 選擇內(nèi)部時鐘,配置時鐘為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)波形變形,整個工程只有這個
    發(fā)表于 03-08 08:12

    STM32CubeIDE下配置STM32F103輸出帶死區(qū)的互補PWM

    STM32F103的TIM1和TIM8是高級定時器,可以產(chǎn)生嵌入死區(qū)時間的互補PWM波,使用STM32CubeIDE完成相關(guān)配置,可以直接生
    的頭像 發(fā)表于 11-01 09:41 ?5809次閱讀
    <b class='flag-5'>STM32</b>CubeIDE下配置<b class='flag-5'>STM32</b>F103<b class='flag-5'>輸出</b>帶死區(qū)的互補<b class='flag-5'>PWM</b>波

    實戰(zhàn)經(jīng)驗 | Timer 結(jié)合 DMA 2D 通道實現(xiàn)不同波形輸出

    不足,建議嘗試使用 PWM加濾波方式產(chǎn)生正弦波。同時要求正弦波與固定電平交替輸出。因此可用一個 TIM 輸出PWM,同時用另一個
    的頭像 發(fā)表于 10-26 15:20 ?943次閱讀
    實戰(zhàn)經(jīng)驗 | Timer 結(jié)合 DMA 2D 通道實現(xiàn)不同<b class='flag-5'>波形</b><b class='flag-5'>輸出</b>

    STM32PWM波形輸出配置的大神總結(jié)

    STM32PWM波形輸出配置的大神總結(jié)
    的頭像 發(fā)表于 10-24 16:00 ?3350次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>PWM</b><b class='flag-5'>波形</b><b class='flag-5'>輸出</b>配置的大神總結(jié)

    STM32H7芯片系列中定時器同步啟動并輸出PWM波形的實現(xiàn)方法

    本文主要研究了STM32H7芯片系列中定時器同步啟動并輸出PWM波形的實現(xiàn)方法。
    的頭像 發(fā)表于 10-24 14:56 ?1381次閱讀
    <b class='flag-5'>STM32</b>H7芯片系列中定時器同步啟動并<b class='flag-5'>輸出</b><b class='flag-5'>PWM</b><b class='flag-5'>波形</b>的實現(xiàn)方法