STM32 cubeMX 呼吸燈實驗

文章代碼使用 HAL 庫。

文章目錄

  • 一、1.PWM原理
  • 二、LED 原理圖
  • 三、使用cubemx 配置 led
  • 四、PWM 相關函數
  • 五、PWM占空比占空比計算
  • 六、PWM 呼吸燈重要代碼
  • 總結


呼吸燈

一、1.PWM原理

PWM全稱為脈沖寬度調制(Pulse Width Modulation),是一種常用的調制技術。它通過改變信號脈沖的寬度來控制電路或裝置的輸出功率或電壓。

在PWM中,周期性的方波信號被產生,其中脈沖的寬度是可變的,而脈沖的頻率是固定的。通常,PWM信號的周期稱為周期時間,而脈沖的占空比則是脈沖寬度與周期時間之間的比值。

PWM信號可用于控制電機速度、調節LED的亮度、產生模擬信號等各種應用。通過改變PWM信號的占空比,可以在時間上控制輸出信號的強度或控制設備的工作時間比。

周期:PWM周期(Pulse Width Modulation period)指的是PWM信號一個完整的周期的時間長度。在PWM信號中,周期是指一個完整的脈沖周期,包括脈沖的高電平和低電平部分。

計算公式:(定時器預分頻系數 + 1) * (重裝載值 + 1) / 時鐘主頻

占空比:

占空比通常用百分比或比例表示,可以取值在 0% 到 100% 之間,或是 0 到 1 之間。占空比為 0% 表示PWM 信號全為低電平,占空比為 100% 表示 PWM 信號全為高電平。一般而言,占空比決定了 PWM信號中高電平的時間長度,從而控制到達被驅動裝置的電源的平均電壓水平。

對于直流電機或LED等裝置,常用 PWM 控制來調節速度或亮度。例如,在 50% 的占空比下,PWM 信號在一個周期內將有一半的時間為高電平,一半的時間為低電平,這將導致電機轉速或燈光亮度的降低。ARR(自動重載寄存器)增加占空比將增加高電平時間,減小占空比則減小高電平時間。

例子:在輸出電壓為10V的電路中,設置PWM占空比為40%,那么起始這個電路輸出的實際電壓是4V。

通常控制LED時只需要給一個高電平就可以控制那么下面是LED電平狀態圖使用PWM控制LED調節亮度的電平狀態圖.

在這里插入圖片描述
在這里插入圖片描述

二、LED 原理圖

可以看到有4個led。 其中 LED2 接到了PB2引腳, LED3 接到了PB1引腳, LED4 接到了PB0引腳,所以我們需要配置對應 led 的 gpio 引腳為輸出引腳。

在這里插入圖片描述
在這里插入圖片描述

三、使用cubemx 配置 led

在這里插入圖片描述
在這里插入圖片描述

四、PWM 相關函數

啟動定時器PWM模式

HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

參數:

  • TIM_HandleTypeDef *htim`:指向 TIM_HandleTypeDef 結構體的指針,該結構體包含了定時器的配置和狀態信息。

  • uint32_t Channel`:指定要啟動 PWM 的通道。對于 STM32 定時器而言,可以有多個通道,每個通道可以獨立地生成 PWM 信號。

設置 占空比

__HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__);

參數:

  • HANDLE:是一個宏或變量,用于表示特定定時器的句柄。

  • CHANNEL:這是指定要操作的定時器通道。

  • COMPARE:這是要設置的比較值,用于比較寄存器的內容。

// 也可以使用 CCRx 比較寄存器設置 占空比。
TIM3->CCR3 = 200;

// 也可以通過htim3.Instance->CCRx直接修改CCR的值
htim3.Instance->CCR3 = 200;

五、PWM占空比占空比計算

CCR(捕獲/比較寄存器)/ ARR(自動重載寄存器) 100%*

如果 ARR(自動重載值) = 500時,當 CCR(比較寄存器值) = 100 則 占空比是 20%

六、PWM 呼吸燈重要代碼

int pwm_value = 0;		// 占空比// 開啟 pwm 輸出
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);for(uint16_t i=1;i<500;i++)    // 通過循環逐漸改變CCR,進而改變占空比。
{htim3.Instance->CCR3 = i; HAL_Delay(1);
}for(uint16_t i=499;i>=1;i--)
{htim3.Instance->CCR3 = i;   // 通過htim3.Instance->CCRx直接修改CCR的值HAL_Delay(1);
} 

在這里插入圖片描述


總結

下篇文章為大家介紹 無源蜂鳴器唱歌。

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

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

相關文章

擁有大量蝦皮買家號有哪些好處

擁有眾多Shopee買家賬號&#xff0c;無疑是賣家們獲取極大優勢的一項策略。多賬號的運用不僅有助于賣家在Shopee平臺上獲得更為豐富的流量&#xff0c;更能夠在關鍵詞排名和銷售表現等方面為其帶來顯著提升。 首先&#xff0c;多個Shopee買家賬號的靈活運用&#xff0c;使賣家能…

前后端(JAVA)實現AES對稱加解密方式

文章目錄 前后端&#xff08;JAVA&#xff09;實現AES對稱加解密方式1 對稱加密分類以及概括1.1 加密安全等級 DES < 3DES < AES < RC1.2 DES1.3 3DES1.4 AES1.5 RC 2 前后端實現AES對稱加解密方式3 后端AES對稱加解密&#xff08;ECB和CBC模式&#xff09;工具類4 前…

【Python百寶箱】從傳感器到云端:深度解析Python在物聯網中的多面應用

邁向智能未來&#xff1a;Python與物聯網生態系統的完美融合 前言 隨著物聯網技術的不斷發展&#xff0c;Python作為一種靈活且強大的編程語言&#xff0c;逐漸成為物聯網開發的重要工具之一。本文將深入探討物聯網領域中常用的Python庫和框架&#xff0c;涵蓋了從輕量級通信…

JavaScript <有道翻譯之數據解密‘23年12月06日版‘>--案例(三)

前言: 記得上半年還是去年,有道翻譯還是直接返回明文數據;現在也跟著,用接口返回加密數據了; 娛樂一下,破他的密文數據... 成品效果圖: js部分: 對于找他的密文數據有點費時,針對密文--->搜他地址和啟動器不是特別容易,輾轉多時(搜:descrypt/json.parse 結合使用更快),有圖…

通訊錄實現

下方是頭文件的代碼 #define _CRT_SECURE_NO_WARNINGS #include <assert.h> #include<stdio.h> #include<string.h> #include<stdlib.h>#define NAME_MAX 20 #define SEX_MAX 6 #define TELE_MAX 12 #define ADDR_MAX 30 #define MAX 100 #define D…

swing快速入門(四)

注釋很詳細&#xff0c;直接上代碼 上一篇 增加內容 流式布局范例 import java.awt.*;public class swing_test_2{public static void main(String[] args){//創建一個窗口對象Frame framenew Frame("test");//設置窗口大小frame.setSize(800,800);//這里演示的是…

Gateway全局異常處理及請求響應監控

前言 我們在上一篇文章基于壓測進行Feign調優完成的服務間調用的性能調優&#xff0c;此時我們也關注到一個問題&#xff0c;如果我們統一從網關調用服務&#xff0c;但是網關因為某些原因報錯或者沒有找到服務怎么辦呢&#xff1f; 如下所示&#xff0c;筆者通過網關調用acc…

中小企業管理者如何培育團隊精神?

某石油工程有限公司總經理曾提問&#xff1a;“作為中小企業的管理者如何才能更好的激發團隊精神呢&#xff1f;” 每個企業都向往和號召團隊精神&#xff0c;但是往往事與愿違。在各種羨慕嫉妒恨的情緒影響下&#xff0c;難免會產生一些落差&#xff0c;影響到團隊精神。 所…

超聲波清洗機會損傷物品嗎?一文明白超聲波清洗機有哪些優點

正確使用超聲波清洗機且買對超聲波清洗機是不會對清洗物品造成傷害的&#xff01; 一、超聲波清洗機工作原理是如何的&#xff1f; 超聲波清洗機的工作原理是利用超聲波產生的空化振動來清潔物體。當超聲波在清洗液中傳播時&#xff0c;它會產生微小的氣泡和振動&#xff0c;這…

論jenkins的使用方法(初步)

&#x1f4d1;打牌 &#xff1a; da pai ge的個人主頁 &#x1f324;?個人專欄 &#xff1a; da pai ge的博客專欄 ??寶劍鋒從磨礪出&#xff0c;梅花香自苦寒來 目錄 &#x1f4d1;什么是持續集成&…

1-1、Java概述

語雀原文鏈接 文章目錄 1、Java發展2、Java體系結構3、Java特點 1、Java發展 1990年&#xff0c;Sun公司(Stanford University Network,斯坦福大學網絡公司)詹姆斯高斯林推出的一門語言最開始注冊的名字oak語言(橡樹)&#xff0c;重名了被迫改成Java2009年Sun公司被甲骨文Ora…

Docker 容器中使用 Docker - DinD 和 DooD

突然間研究這個來的緣由是正在從 Jenkins 往 Harness 的過度, 而完全用命令來構建 Docker 鏡像變得不一樣了。在 Jenkins 中 Agent 本身也是一個 Docker Daemon, 所以 Docker 命令執行無障礙&#xff0c;而 Harness 的所謂的 Agent 就是一個個的運行在 Kubernetes 中的 Docker …

error:gmapping

– Could not find the required component ‘gmapping’. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found. CMake Error at /opt/ros/kinetic/share/catkin/cmake…

logstash插件簡單介紹

logstash插件 輸入插件(input) Input&#xff1a;輸入插件。 Input plugins | Logstash Reference [8.11] | Elastic 所有輸入插件都支持的配置選項 SettingInput typeRequiredDefaultDescriptionadd_fieldhashNo{}添加一個字段到一個事件codeccodecNoplain用于輸入數據的…

【SpringBoot教程】SpringBoot Thymeleaf 基于HTML5的現代模板引擎

作者簡介&#xff1a;大家好&#xff0c;我是擼代碼的羊駝&#xff0c;前阿里巴巴架構師&#xff0c;現某互聯網公司CTO 聯系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我進群&#xff0c;大家一起學習&#xff0c;一起進步&#xff0c;一起對抗…

error:move_base_msgs

CMake Warning at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package): Could not find a package configuration file provided by “move_base_msgs” with any of the following names: move_base_msgsConfig.cmake move_base_msgs-config.cmake …

鼠標光標不見了怎么辦?速速get這4個方法!

“非常奇怪&#xff0c;我的鼠標光標用著用著就不見了&#xff0c;這是為什么呢&#xff1f;有什么方法可以解決這個問題嗎&#xff1f;” 在電腦使用過程中&#xff0c;有時候會遇到鼠標光標突然消失的情況&#xff0c;這無疑會給我們日常操作帶來很大的不便。那么&#xff0c…

Linux bin包生成

需求背景&#xff1a; 在實際項目時我們很少把源碼用個tar給到客戶&#xff0c;這樣顯得很不專業&#xff0c;且有的時候我們提供補丁&#xff0c;那么這個時候我們提供一個補丁的bin包可以直接安裝運行就顯得很高大上了。 物料準備 準備一臺liunx&#xff0c;虛擬機亦可&am…

自定義插件vue-router簡單實現hashRouter設計思路

步驟 1.掛載 vue.prototype.$router 2.聲明兩個組件 router-view this.$router.current>component > h(component) router-link h(a,{attrs:{href:#this.to}},this.$slots.default) 3.url的監聽&#xff1a;window hashchange的改變 4.定義響應式current&#xff0…

使用Python提取PDF文件中指定頁面的內容

在日常工作和學習中&#xff0c;我們經常需要從PDF文件中提取特定頁面的內容。在本篇文章中&#xff0c;我們將介紹如何使用Python編程語言和兩個強大的庫——pymupdf和wxPython&#xff0c;來實現這個任務。 1. 準備工作 首先&#xff0c;確保你已經安裝了以下兩個Python庫&…