前言
前面我說過STM32的定時器功能很強大,今天就來總結一下它的另外一個“強大”功能:TIM的比較輸出功能,輸出可調PWM波形。直接調用函數接口“TIM2_CH1_PWM(uint32_t Freq, uint16_t Dutycycle)”傳入頻率和占空比就能輸出指定的波形。
我提供的軟件工程直接調用是比較簡單就能實現想要的PWM波形。但是,如果你是學習者,建議還是進去函數把每一個細節了解清楚,里面的東西可能對你掌握TIM很有幫助。
下載
文章提供的“軟件工程”都是在硬件板子上進行多次測試、并保證沒問題才上傳至360云盤,請放心下載測試,如有問題請檢查一下你的板子是否有問題。
ST標準外設庫和參考手冊、數據手冊等都可以在ST官網下載,你也可以到我的360云盤下載。關于F0系列芯片的參考手冊有多個版本(針對F0不同芯片),但有一個通用版本,就是“STM32F0x128參考手冊V8(英文)2015-07”建議參考該手冊,以后如果你換用一種型號芯片也方便了解。
今天的軟件工程下載地址(360云盤):
https://yunpan.cn/cSitPxgQKsET5 訪問密碼
STM32F0xx的資料可以在我360云盤下載:
https://yunpan.cn/cS2PVuHn6X2Bj 訪問密碼 8c37
準備工作
建議準備F0的參考手冊和數據手冊,方便查找相關知識,沒有的請到ST官網或到我360云盤下載。
今天總結的軟件工程是基于“TIM基本延時配置詳細過程”修改而來,因此需要將該軟件工程下載準備好。今天學習的源代碼主要添加在timer.c文件里面。
比較輸出原理
看下面框圖,計數器的時鐘從RCC處來,經過分頻之后達到計數器,經過比較器進行比較,達到設定值,產生一個事件對應引腳翻轉。主要就是這三個寄存器:重載值、計數值、比較值。說到這里若還不明白請仔細想一下。
配置過程詳情
①RCC時鐘
該函數位于bsp.c文件下面;
我個人習慣第一步配置時鐘,ST官方提供的例程也是把配置時鐘放在前面。關于RCC時鐘的配置比較重要,有好幾次我就是由于忘記配置相應RCC時鐘,讓我找了很久的問題,最后才發現是RCC時鐘沒有配置。
注意:
外設時鐘不要隨便添加,比如:RCC_APB1外設不要配置在RCC_APB2時鐘里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);這樣能編譯過,但是錯誤的】
我每次都提醒RCC時鐘,是因為很多人就是因為時鐘而導致軟件運行有問題,所以,提醒更多人要注意配置RCC.
②輸出引腳配置
該函數位于timer.c文件下面;
注意:
復用功能必須配置好,上面兩處,有一處沒配置好,對應引腳都不會輸出PWM波形。
③TIM比較輸出配置
該函數位于timer.c文件下面;
注意:
決定輸出頻率和占空比主要由這三個參數(TIM2_PRESCALER_VALUE、tim2_period、tim2_pulse)決定的。
以今天工程輸出1KHz,20%來舉例說明:
TIM2_PRESCALER_VALUE = 72M / 36M - 1 = 1
tim2_period = 36000 - 1
tim2_pulse = 7200
這三個怎么得來的請看代碼,今天工程輸出的波形如下圖:
④重點
A.細心研究過代碼的人會發現TIM_OCMode_PWM1,還有一個TIM_OCMode_PWM2,這兩個的區別是什么呢? 答案是:輸出的極性(也就是方向)不一樣。
這時候又有人問:那下面的輸出極性TIM_OCPolarity_High與上面的關系是什么呢?答案是:這兩個參數配合一起輸出決定PWM波形的極性。
也就是說不同參數可以達到一樣的效果,下圖參數的配置同樣可以輸出一樣的波形。
感興趣的朋友可以試著修改測試一下效果。
B.今天的工程可以設置周期性中斷(也就是1ms中斷一次),感興趣的朋友可以試著寫一下。使用串口打印測試的話,盡量頻率低一點,不然串口響應不過來。
說明
或許你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片軟件兼容性很好,可以適用于F0其他很多型號的芯片,甚至是F2、F4等芯片上(具體請看手冊、或者親自測試)。
本文章提供的軟件工程是基于ST標準外設庫為基礎建立而成,而非使用STM32CubeMX建立工程。個人覺得使用ST的標準外設庫適合與學習者,STM32CubeMX建立工程結構復雜,對于學習者,特別是初學者估計會頭疼。
今天的工程是基于工程“STM32F0xx_TIM基本延時配置詳細過程”修改而來,以上實例總結僅供參考,若有不對之處,敬請諒解。
上一篇:STM32F0xx_USART收發配置詳細過程
下一篇:STM32F0xx_TIM輸入捕獲(計算頻率)配置詳細過程
推薦閱讀
史海拾趣
DB Unlimited始終將客戶放在心中最重要的位置。公司堅持以客戶為中心的服務理念,為客戶提供全方位、高品質的服務。無論是售前咨詢、售后服務還是技術支持等方面,DB Unlimited都始終秉持著專業、高效、熱情的態度,贏得了客戶的廣泛贊譽和信賴。這種客戶至上的服務理念也成為了公司不斷發展壯大的重要保障之一。
請注意,以上故事框架僅供參考,實際的故事需要根據DB Unlimited公司的真實發展歷程和具體事實進行編寫。
隨著市場的不斷發展和競爭的加劇,BELDEN公司開始通過并購來擴大規模和提升競爭力。2004年7月,BELDEN公司與CDT公司合并,這次合并使得BELDEN成為了全球最大的通訊線纜和網絡產品生產廠家之一。合并后的BELDEN不僅擁有了更豐富的產品線和更強大的技術實力,還進一步提升了在全球市場中的競爭地位。此后,BELDEN繼續通過并購等方式不斷擴大規模,逐步成為了電子行業的領軍企業。
在電子制造行業日益重視環保和可持續發展的背景下,EAO公司積極響應號召,致力于研發和生產環保型電子產品。公司投入大量資源研發新型環保材料,優化生產工藝,減少生產過程中的廢棄物排放。同時,EAO公司還建立了完善的電子垃圾回收體系,對廢棄電子產品進行專業處理,確保資源得到合理利用,減少對環境的負面影響。
隨著電子行業的競爭加劇,Acculin Inc面臨著市場份額下降的挑戰。為了應對這一變化,公司決定調整戰略方向,將重點轉向智能穿戴設備市場。通過研發具有獨特功能的智能手環和智能手表,Acculin成功吸引了年輕消費者的關注,并在新的市場領域取得了突破。
隨著產品質量的不斷提升和技術的持續創新,固馳電子開始積極拓展國內外市場。公司產品不僅暢銷國內市場,為美的、格力、艾美特等知名企業配套,還大量出口至韓國、俄羅斯、美國、加拿大、德國等國家和地區。這一過程中,固馳電子憑借其優良的品質、滿意的價格和完善的服務贏得了國內外客戶的一致好評,品牌影響力顯著提升。
如題目,本人設計數據采集系統,需要RAM芯片,打算采用intel6264,但是protel2004里沒有intel的元件庫,把protel99里的intel元件庫轉換過來之后也沒有這個芯片。急啊~~~… 查看全部問答∨ |
|
UCHAR keyScan() { void delay(UINT); UCHAR xTemp, yTemp, readKey, reReadKey; keyFlag = 0; //掃描按鍵前清除按鍵標記 xTemp = (P3 = 0x0f) & 0x0f; //獲取低四位的值, ...… 查看全部問答∨ |
|
《TMS320F281x Boot ROM Serial Flash Programming》 摘要 本應用報告描述了TI Flash應用編程接口(API)的應用,此API是TI Flash算法的軟件接口。在使用本報告之前,注意需懂得Flash API文檔的基礎。本文檔不能取代Flash API文檔,而是指導你關注包含Flash API文檔的一系列TI資料中最重要的地方。詳細 ...… 查看全部問答∨ |
為何這個程序仿真器上運行成功,但燒到89S52上就沒效果。先謝了! 功能是兩個定時器,T0控制P10,T1控制P17,分別亮滅。下面的程序在仿真器上看到效果,但燒到AT89S52上就根本不亮。sbit p1 = P1 ^ 0; sbit p2 = P1 ^ 7;void action_0();void action_1();unsigned long round0 = 5000, round1 = 900;char code urcl ...… 查看全部問答∨ |
最近在學習launchpad時,遇到這樣的問題,使用usb和pc連接是不能實現串口通信的么? 相同的程序我將RXD和TXD接到其他板子上和PC就能正常通信啊 可是似乎有人用launchpad的usb和pc相連實現了串口啊,為什么我不行呢 … 查看全部問答∨ |
最近在看到山東省電子設計競賽的一個題目,大家看看怎么做?注意看說明部分哈 低功耗電波鐘的設計制作(B題) 【本科題】 一、任務 設計并制作一臺低功耗電波鐘。 二、要求 1.基本要求 (1)自行設計制作天線、選頻放大,使其能接受 ...… 查看全部問答∨ |
; ChangePrPaGrid function tranffering PLL2 information to PLL3. Generating past Grid ; voltage information ; LockDetect funcion writing on PLL4 and generating PLL5 status ; SoftStart function is generating status of PLL6 . ...… 查看全部問答∨ |
build.prop 百度百科——android機器性能的重要指標 build.prop目錄綜述文件結構參數1. Dalvik虛擬機相關參數2. 系統版本、定義等參數3. 基本性能相關參數總結展開綜述文件結構參數1. Dalvik虛擬機相關參數2. 系統版本、定義等參數3. &n ...… 查看全部問答∨ |