新手必看!!附源碼!!STM32通用定時器-比較輸出PWM

一、什么是PWM?

PWM(脈沖寬度調制)是一種用于控制電子設備的技術。它通過調整信號的脈沖寬度來控制電壓的平均值。PWM常用于調節電機速度、控制LED亮度、產生模擬信號等應用。

二、PWM的原理

PWM的基本原理是通過以一定頻率產生的脈沖信號,通過調整脈沖的寬度(占空比)來模擬電壓的不同電平。占空比是指脈沖高電平的時間占整個周期的比例。通過調整占空比,可以在輸出端產生不同的電平,從而實現對電機、LED等設備的精確控制。

例如,對于一個50%占空比的PWM信號,脈沖的高電平時間占整個周期的一半,這將導致輸出電平的平均值為一半的電壓。通過調整占空比,你可以在0%到100%的范圍內控制輸出電平的變化。

三、PWM模式以及輸出PWM原理

ARR: 自動重裝載寄存器的值。
CCRx: 捕獲/比較寄存器的值。

PWM波周期或頻率由ARR決定,PWM波占空比由CCRx決定

(1)PWM模式1
在向上計數時,一旦CNT<CCRx 時輸出為有效電平,否則為無效電平。
在向下計數時,一旦CNT>CCRx 時輸出為無效電平,否則為有效電平。

如:
在這里插入圖片描述
當CNT < CCRx,IO輸出1。
當CNT >= CCRx,IO輸出0。

在這里插入圖片描述
當CNT <=CCRx,IO輸出1。
當CNT > CCRx,IO輸出0。

(2)PWM模式2
在向上計數時,一旦CNT>CCRx 時輸出為有效電平,否則為無效電平。
在向下計數時,一旦CNT<CCRx 時輸出為無效電平,否則為有效電平。
如:
在這里插入圖片描述當CNT < CCRx,IO輸出0。
當CNT >= CCRx,IO輸出1。
在這里插入圖片描述
當CNT <= CCRx,IO輸出0。
當CNT > CCRx,IO輸出1。

四、配置PWM輸出實驗步驟

實驗內容:將PC6復用為TIM3通道1,輸出pwm。注:stm32的pwm輸出引腳是使用的IO口的復用功能。

具體代碼:

    void PWM_Init_TIM3_CH1(u16 ccr)
{//1.初始化PC6引腳RCC->AHB1ENR |=(0x01 <<2); //開啟GPIOC的時鐘GPIOC->CRL &= 0XF0FFFFFF;//PC6清0GPIOA->CRL |= 0X0B000000;//復用功能輸出(推挽50MHz輸出)//2.初始化基本定時器配置RCC->APB1ENR |= 1 << 1;      //使能TIM3時鐘 TIM3->SMCR &=~(0x07 << 0);   //選擇內部時鐘源TIM3->CR1 &=~(0x03<<5);  //邊沿對齊TIM3->CR1 &=~(0X01<<4); //設置為向上計數模式TIM3->CR1 |=(0x01 <<7);   //有影子,緩沖。TIM3->ARR = 99;//設定計數器主動重裝值(決定PWM的頻率)TIM3->PSC = 7199;//預分頻器 0為不分頻  //3.初始化輸出通道TIM3->CCR1 =ccr;   //寫入比較值TIM3->CCMR1 &=~(0x03 << 0) ;    //通道配置為輸出功能TIM3->CCMR1 |=(0x01 << 3);    //有影子TIM3->CCMR1 &=~(0x01 <<7);    //OC1Ref不受ETRF輸入影響。TIM3->CCMR1 &= ~0x07 <<4; TIM3->CCMR1 |=(0x06 <<4); //PWM模式1TIM3->CCER &=~(0x01 <<1); //實際波形=參考波形。 不反相TIM3->CCER  |= (0x01 << 0);//輸入/捕獲1輸出使能TIM3->EGR |=(0x01 <<0); //產生更新事件,將上面配置更新到影子寄存器TIM3->CR1 |= (0X01 << 0);//使能定時器3    
}

主函數:

int main()
{//pwm范圍為0-ARR。 高低電平隨著pwm模式不同而不同。//如比較值為90,pwm模式1向上計數,低于比較值90時,為高電平。PWM_Init_TIM3_CH1(90);  while(1){}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164086.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SPSS多元對應分析

前言&#xff1a; 本專欄參考教材為《SPSS22.0從入門到精通》&#xff0c;由于軟件版本原因&#xff0c;部分內容有所改變&#xff0c;為適應軟件版本的變化&#xff0c;特此創作此專欄便于大家學習。本專欄使用軟件為&#xff1a;SPSS25.0 本專欄所有的數據文件請點擊此鏈接下…

紅隊攻防實戰之釘釘RCE

我這一生如履薄冰&#xff0c;你說我能走到對岸嗎&#xff1f; 本文首發于SecIN社區&#xff0c;原創作者即是本人 前言 網絡安全技術學習&#xff0c;承認??的弱點不是丑事。只有對原理了然于?&#xff0c;才能突破更多的限制。擁有快速學習能力的白帽子&#xff0c;是不…

vue3 教程(中)

偵聽器 用于偵聽指定變量&#xff0c;當其響應式狀態變化時觸發回調函數。 watch() watch() 需明確指定偵聽的數據源&#xff0c;并且僅當數據源變化時&#xff0c;才會執行回調&#xff0c;在創建偵聽器時&#xff0c;不會執行回調&#xff0c;可以獲取到數據源變化前后的值…

Flutter 父子組件通信

在Flutter 中父組件調用子組件的方法可以通過GlobalKey實現&#xff0c;而子組件調用父組件方法可以通過回調函數實現。 父組件 class _MyHomePageState extends State<MyHomePage> {final GlobalKey<LoadPencilState> loadPencilKey GlobalKey<LoadPencilSt…

react中虛擬dom,diff,fiber - 初級了解

借鑒&#xff1a; 「React深入」一文吃透虛擬DOM和diff算法 - 掘金 (juejin.cn) 虛擬dom、fiber、渲染dom、dom-diff - 掘金 (juejin.cn) 未閱讀源碼&#xff0c;了解層面&#xff0c;后續可以深入了解 1.虛擬DOM ①.結構上&#xff1a;虛擬DOM比真實DOM輕很多 ②.操作上&…

主流的低代碼平臺有哪些?程序員應該如何與低代碼相處?

本文主要闡述低代碼的概念&#xff0c;介紹目前主流的低代碼平臺&#xff0c;總結低代碼平臺的典型特征、存在優勢以及未來發展趨勢。并站在程序員的角度&#xff0c;分析如何在已經到來的低代碼戰爭中&#xff0c;找到自己的定位&#xff0c;一展所長。 什么是低代碼&#xff…

脈沖寬度基礎知識簡介

脈沖寬度是指脈沖所能達到的最大值所持續的周期時間。脈沖寬度是電子領域中一個重要的概念&#xff0c;它與脈沖重復間隔和占空比等參數密切相關。 脈沖寬度通常用于電信號的測量&#xff0c;可以用來描述脈沖的形狀、幅度和寬度等特性。在雷達和電源領域中&#xff0c;脈沖寬度…

Flink 替換 Logstash 解決日志收集丟失問題

在某客戶日志數據遷移到火山引擎使用 ELK 生態的案例中&#xff0c;由于客戶反饋之前 Logstash 經常發生數據丟失和收集性能較差的使用痛點&#xff0c;我們嘗試使用 Flink 替代了傳統的 Logstash 來作為日志數據解析、轉換以及寫入 ElasticSearch 的組件&#xff0c;得到了該客…

實現一個計算機

圖片&#xff1a; 實現代碼&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>body {padding: 20px;font-family: Arial;}.calc-wrap {width: 300px;bor…

VL06O報表添加增強字段

業務描述 用戶需要在VL06O事務代碼下進行批量交貨過賬&#xff0c;現有的篩選條件不太適用當前公司的業務&#xff0c;需要在報表中新增三個交貨單增強字段&#xff0c;方便其篩選&#xff08;選擇屏幕沒有加&#xff0c;用戶在報表里用標準按鈕功能自己篩選&#xff09; 效果…

十一 動手學深度學習v2計算機視覺 ——微調

一、網絡架構 一個神經網絡一般可以分成兩塊 特征抽取&#xff0c;將原始像素變成容易線性分割的特征。線性分類器來做分類。 二、訓練 是一個目標數據集上的正常訓練任務&#xff0c; 但使用更強的正則化 使用更小的學習率使用更少的數據迭代 源數據集遠遠復雜于目標數據集…

藍橋杯算法雙周賽心得——迷宮逃脫(dp)

大家好&#xff0c;我是晴天學長&#xff0c;dp版的來啦&#xff0c;可以是受益匪淺啊&#xff0c;需要的小伙伴可以關注支持一下哦&#xff01;后續會繼續更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宮逃脫 迷官逃脫[算法賽] 問題描述 在數學王國中&#xff0c;存…

便攜式心電圖機方案_基于MT6735平臺的手持心電圖機

便攜式心電圖機具備體積小、易攜帶、兼容12導模式的特點&#xff0c;通過工頻濾波、基線濾波和肌電濾波等處理&#xff0c;能夠獲得更精準的心電圖譜。該設備可以與醫院信息系統(HIS)相連接&#xff0c;實現患者信息的共享。采集的心電數據可以通過無線方式發送到心電判讀平臺&…

企業建數倉的第一步是選擇一個好用的ETL工具

當企業決定建立數據倉庫&#xff08;Data Warehouse&#xff09;&#xff0c;第一步就是選擇一款優秀的ETL&#xff08;Extract, Transform, Load&#xff09;工具。數據倉庫是企業數據管理的核心&#xff0c;它存儲、整合并管理各種數據&#xff0c;為商業決策和數據分析提供支…

PC8250(CC-CV控制)5V/8A同步降壓恒流恒壓軟啟動帶EN功能只需極少外圍元件

概述 PC8250是一個同步降壓轉換器輸出電流至8A。它的設計允許操作電源電壓范圍從9V到42V。外部關閉功能可以通過邏輯電平來控制COMP/EN引腳下降&#xff0c;然后進入待機模式。外部補償使反饋控制具有良好的線路和負載調節&#xff0c;外部設計靈活。PC8250在CC&#xff08;恒定…

【讀懂AUTOSAR規范】PduR 緩存分配(Buffer allocation)

1. 前言 PDU路由器模塊支持將I-PDU從一個源總線網關到一個或多個目標總線。與從/到本地模塊的傳輸和接收不同,PDU路由器模塊必須同時充當接收器和發射器,并且在某些情況下還提供I-PDU的緩沖。網關需求被有意地分離,以便在不需要網關的情況下高效實現PDU路由器模塊。如果PDU…

華三無線控制器WX2540H配合準入做Portal認證

數據通信 - 建設篇 - 無線 第四章 華三無線控制器WX2540H配合準入做Portal認證 數據通信 - 建設篇 - 無線系列文章回顧華三無線控制器WX2540H配合準入做Portal認證前言其他配置優化參考來源系列文章回顧 第一章 華三無線控制器配置本地轉發 第二章 華三無線控制器配置802.1X認…

Redis-Day1基礎篇(初識Redis, Redis常見命令, Redis的Java客戶端)

Redis-Day1基礎篇 初識Redis認識NoSQL認識Redis安裝Redis啟動RedisRedis客戶端 Redis命令數據結構介紹通用命令操作命令StringHashListSetSortedSet Redis的Java客戶端客戶端對比Jedis客戶端Jedis快速入門Jedis連接池 SpringDataRedis客戶端SpringDataRedis概述SpringDataRedis…

boardmix AI思維導圖,一鍵自動生成思維導圖!

在日常學習和工作中&#xff0c;我們常常需要記憶和整理大量的知識點和思維結構。 此時&#xff0c;思維導圖的存在就大大方便了我們的工作。與傳統的文本筆記不同&#xff0c;思維導圖可以結合文字、圖像、顏色等多種元素&#xff0c;幫助我們更好地整理和分析知識的關系&…

centos7上用docker部署redis

1. 下載redis鏡像 docker pull redis docker images # 查看鏡像是否下載成功2. 安裝redis容器 2.1 先準備好配置文件redis.conf vi /data/redis/redis.conf寫入配置信息&#xff0c;appendonly yes&#xff0c;如果需要給redis配置密碼&#xff0c;可以寫入requirepass root…