【stm32/CubeMX、HAL庫】嵌入式實驗六:定時器(2)|PWM輸出

參考:

【【正點原子】手把手教你學STM32CubeIDE開發】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=13&share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

《嵌入式系統基礎與實踐》劉黎明等編著,第九章定時器,PWM從P289開始。

【【STM32教程】入門教程(基于HAL庫+CubeMX+MDK-ARM)】 https://www.bilibili.com/video/BV1y7411m7gg/?share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

定時器引腳映射

https://blog.csdn.net/weixin_54015326/article/details/135920496

參看上面的文章或者查看手冊(8.3.7):

實驗內容

2、PWM 輸出設計。時鐘頻率為 72Mhz,采用定時器,PWM 輸出。

(1)設計 0.1 毫秒延時,設計占空比 50%,全彩燈 RGB_R.

RGB_R引腳PB13,根據上圖,使用TIM1_CH1N通道。

?下面的CH polarity選擇LOW,pulse設為50,表示占空比為50%(50%=50/(100-1+1))

?注意要確認時PB13作為通道復用的引腳

無需寫其他代碼。

(2)設置 KB1 調整占空比,5 級調整,循環按鍵。

KB1對應引腳PE0,設置內部上拉,按下為低電平,設置為下降沿觸發中斷:

?勾選該通道的中斷,搶占優先級設為1:

?中斷回調函數:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{HAL_Delay(10);//延時,用來消抖if(GPIO_Pin==GPIO_PIN_0) {if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_0)==RESET){pwm_val=levels[mindex];mindex=(mindex+1)%5;HAL_Delay(1);}}flag=1;}

?主函數:注意開啟CH1N的PWM輸出跟一般定時器寫法不一樣,請看:

https://www.bilibili.com/read/cv22069045/

普通的啟動:

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) 
//定時器 PWM 輸出啟動函數

  /* USER CODE BEGIN 2 *//* 定時1互補輸出PWM */HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,1);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){if(flag==1){__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);HAL_Delay(1);flag=0;}/* USER CODE END WHILE */}

(3)設計全彩燈 RGB_R 呼吸漸變效果。

大部分和(2)一樣,注釋掉(2)在while里的部分,添加:

while(pwm_val<100){pwm_val++;__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);HAL_Delay(1);}while(pwm_val){pwm_val--;__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pwm_val);HAL_Delay(1);}HAL_Delay(200);

實現簡單的呼吸效果。

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

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

相關文章

愛普生TG5032SFN溫補晶振在機器人控制中的應用

機器人控制是機器人技術的核心組成部分&#xff0c;它涉及通過傳感器采集外部環境信息&#xff0c;然后經過信號處理、運動規劃和執行控制等步驟&#xff0c;最終實現機器人的運動控制和任務執行。在技術的不斷更選&#xff0c;機器人控制也在不斷進步和演變。智能化機器人具備…

cannot compute sizeof(off_t) when compile netcdf-fortran

export LD_LIBRARY_PATH/netcdf-c/lib:$LD_LIBRARY_PATH

Z緩沖技術在AI去衣中的關鍵角色

引言&#xff1a; 人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;為圖像處理領域帶來了革命性的變化。其中&#xff0c;AI去衣技術作為一種新興的應用&#xff0c;引起了廣泛關注。它不僅在多媒體內容的編輯、虛擬現實和增強現實等領域具有重要的應用價值&…

Jenkins 構建 Maven 項目:項目和服務器在一起的情況

bash.sh內容 #!/bin/bash#刪除歷史數據 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #獲取傳入的參數 echo "arg:$appname"#獲取正在運行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

1673. 找出最具競爭力的子序列

題目 給定一個整數數組 nums 和一個正整數 k&#xff0c;返回長度為 k 且最具競爭力的 nums 子序列。 數組的子序列是從數組中刪除一些元素&#xff08;可能不刪除元素&#xff09;得到的序列。 在子序列 a 和子序列 b 第一個不相同的位置上&#xff0c;如果 a 中的數字小于…

mysql 刪除特殊字符 表中存了特殊字符 換行符 回車符 word字符 查詢不到

省流&#xff1a; UPDATE t1 SET f1 REPLACE(REPLACE( f1 , CHAR(10), ), CHAR(13), ); 用 replace() 函數將 換行符char(10) 和 回車符char(13) 替換為空字符串。 char(10)&#xff1a;換行 char(13)&#xff1a;回車 發現表里存進很多換行符&#xff0c;如下圖&#xff1a…

深入研究Qt Meta - Object System

目錄 先說RTTI 再說QMeta Object System 關于Q_OBJECT 這篇文章我打算研究一下QMetaObject System&#xff0c;也就是Qt自己構建起來的元對象系統。 先說RTTI 啥是RTTI&#xff1f;這是C編程里的一個常見術語&#xff0c;全稱是&#xff1a;運行階段類型識別&#xff08;Ru…

Chrome DevTools攻略

Chrome DevTools&#xff0c;也稱為Chrome開發者工具&#xff0c;是一套直接內置于Google Chrome瀏覽器的Web開發者工具。以下是一些使用Chrome DevTools的攻略和技巧&#xff1a; 打開DevTools&#xff1a; 右鍵點擊頁面上的任何元素&#xff0c;選擇“檢查”或“審查元素”。…

2024年華為OD機試真題-機場航班調度程序-C++-OD統一考試(C卷D卷)

題目描述: XX市機場停放了多架飛機,每架飛機都有自己的航班號CA3385,CZ6678,SC6508等,航班號的前2個大寫字母(或數字)代表航空公司的縮寫,后面4個數字代表航班信息。但是XX市機場只有一條起飛用跑道,調度人員需要安排目前停留在機場的航班有序起飛。為保障航班的有序起…

【webrtc】MediaEngine的實現CompositeMediaEngine創建VOE

m98音視頻的引擎是管理channel的看起來是外部強加給CompositeMediaEngine 管理的。CompositeMediaEngine :合成媒體引擎 G:\CDN\rtcCli\m98\src\media\base\media_engine.h// CompositeMediaEngine constructs a MediaEngine from separate // voice and video engine classes…

Python中文分詞工具庫之jieba使用詳解

概要 在自然語言處理(NLP)領域,中文文本的分詞是一個重要且基礎的任務。Python的jieba庫是一個廣泛使用的中文分詞工具,提供了豐富的功能,包括精準模式、全模式、搜索引擎模式等,適用于不同的應用場景。本文將詳細介紹jieba庫,包括其安裝方法、主要特性、基本和高級功能…

代碼隨想錄35期Day49-Java

Day49題目 LeetCode123買賣股票三 核心思想:和昨天的買賣股票相比,這個只允許買兩次,因此把狀態新增幾個,可見代碼注釋 class Solution {public int maxProfit(int[] prices) {// 設置五個狀態 0 : 無操作 , 1 : 第一次買入, 2 : 第一次賣出 , 3: 第二次買入, 4:第二次賣出…

java技術:oauth2協議

目錄 一、黑馬程序員Java進階教程快速入門Spring Security OAuth2.0認證授權詳解 1、oauth服務 WebSecurityConfig TokenConfig AuthorizationServer 改寫密碼校驗邏輯實現類 2、oauth2支持的四種方式&#xff1a; 3、oauth2授權 ResouceServerConfig TokenConfig 4、…

前端面試題日常練-day19 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 1. AJAX是什么的縮寫&#xff1f; A. Asynchronous JavaScript and XMLB. Asynchronous JavaScript and XHTMLC. Asynchronous Java and XMLD. Asynchronous Java and XHTML2. 下列哪個方法用于創建…

SpringCloudAlibaba 動態讀取配置文件的信息

傳統讀取方式&#xff1a; 在application.properties中寫入要讀取的內容&#xff0c;如下&#xff1a; coupon.user.nameTom coupon.user.age27 接口引入處&#xff1a; Value("${coupon.user.name}")private String name;Value("${coupon.user.age}")p…

MySQL的索引是什么

MySQL的索引 一、索引概述二、索引結構1.簡要概述2.從二叉樹說起3.再在說下B-Tree4.為什么選擇BTree5.Hash又是什么6.博主被面試官經常問的題目 三、索引分類四、聚集索引&二級索引五、索引語法 一、索引概述 1.索引是幫助MySQL 高效獲取數據的數據結構(有序)。在數據之外…

[STM32-HAL庫]Flash庫-HAL庫-復雜數據讀寫-STM32CUBEMX開發-HAL庫開發系列-主控STM32F103C6T6

目錄 一、前言 二、實現步驟 1.STM32CUBEMX配置 2.導入Flash庫 3.分析地址范圍 4.找到可用的地址 5.寫入讀取普通數據 6.寫入讀取字符串 6.1 存儲相關信息 6.2 存取多個參數 三、總結及源碼 一、前言 在面對需要持久化存儲的數據時&#xff0c;除了掛載TF卡&#xff0c;我們…

燃數科技前端25-40K*14薪一面超簡單,下周二面啦

一面 1、自我介紹 2、低代碼如何設計的 3、react路由原理 4、react生命周期 5、什么是回調地獄&#xff0c;如何解決 6、jwt和session有什么區別 7、js文件相互引用有什么問題&#xff1f;如何解決 8、一個很大的json文件&#xff0c;前端讀取如何優化 面試我的不像是…

為什么說 Redis 是單線程的?——Java全棧知識(25)

為什么說 Redis 是單線程的&#xff1f; 我們常說的 Redis 是單線程的&#xff0c;但是我前面在講持久化機制的時候又說 RDB 的持久化是通過主進程 fork 出一個子進程來實現 RDB 持久化。那么 Redis 到底是多線程還是單線程的呢&#xff1f; Redis 的網絡 IO 和鍵值的讀寫是單…

力扣:1306. 跳躍游戲 III

1306. 跳躍游戲 III 這里有一個非負整數數組 arr&#xff0c;你最開始位于該數組的起始下標 start 處。當你位于下標 i 處時&#xff0c;你可以跳到 i arr[i] 或者 i - arr[i]。 請你判斷自己是否能夠跳到對應元素值為 0 的 任一 下標處。 注意&#xff0c;不管是什么情況下…