国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

這篇具有很好參考價(jià)值的文章主要介紹了STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、PWM簡介

PWM (Pulse Width Modulation)就是對(duì)外輸出脈寬(即占空比)可調(diào)的方波信號(hào),簡稱脈寬調(diào)制;

信號(hào)頻率由自動(dòng)重裝寄存器ARR 的值決定,占空比由比較寄存器CCR 的值決定。

PWM工作模式

PWM模式1 :
在向上計(jì)數(shù)時(shí),一旦TIMx_CNT<TIMx_CCR1時(shí)通道1為有效電平,否則為無效電平;在向下計(jì)數(shù)時(shí),一旦TIMx_CNT>TIMx_CCR1時(shí)通道1為無效電平(OC1REF=0),否則為有效電平(OC1REF=1)。

總結(jié)就是:PWM模式1,無論是向上還是向下計(jì)數(shù),當(dāng)計(jì)數(shù)值小于重裝載值是輸出有效電平

PWM模式2 :
在向上計(jì)數(shù)時(shí),一旦TIMx_CNT<TIMx_CCR1時(shí)通道1為無效電平,否則為有效電平;在向下計(jì)數(shù)時(shí),一旦TIMx_CNT>TIMx_CCR1時(shí)通道1為有效電平,否則為無效電平。

總結(jié)就是:PWM模式2,無論是向上還是向下計(jì)數(shù),當(dāng)計(jì)數(shù)值大于重裝載值是輸出有效電平

在兩種模式下TIMx_CNT(計(jì)數(shù)器當(dāng)前值)TIMx_CCR1(捕獲/比較值) 只是決定是有效電平還是無效電平,有效電平可以是高電平也可以是低電平

以向上計(jì)數(shù)圖例為例介紹

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

上圖中:CNT(計(jì)數(shù)器當(dāng)前值)、ARR(自動(dòng)重裝載值)之外,還多了一個(gè)值CCRx(捕獲/比較寄存器值)

當(dāng)CNT小于CCRx時(shí),TIMx_CHx通道輸出低電平;
當(dāng)CNT等于或大于CCRx時(shí),TIMx_CHx通道輸出高電平。
?
其中 預(yù)分頻系數(shù)決定了PWM的時(shí)鐘速度 、ARR(自動(dòng)重裝載值)的大小決定了PWM的周期CRRx(捕獲/比較寄存器值)決定了輸出有效信號(hào)的時(shí)間

有效信號(hào): 高電平、低電平

PWM的一個(gè)周期
定時(shí)器從0開始向上計(jì)數(shù);
0 ~ t1 ,定時(shí)器計(jì)數(shù)器TIMx_CNT值小于CCRx值 ,輸出低電平;
t1 ~ t2 ,定時(shí)器計(jì)數(shù)器TIMx_CNT值大于CCRx值,輸出高電平
TIMx_CNT值達(dá)到ARR時(shí) ,定時(shí)器溢出,重新向上計(jì)數(shù);
循環(huán)上述過程;

PWM時(shí)間計(jì)算

PWM周期計(jì)算:

Tpwm = ( (ARR + 1) * (PSC + 1) ) / Tclk

ARR 是自動(dòng)重裝載的值
PSC 是預(yù)分頻系數(shù)
Tclk 是對(duì)應(yīng)的時(shí)鐘頻率

示例:Tclk = 72M 、ARR (自動(dòng)重裝載的值)= 9999、PSC (預(yù)分頻系數(shù))= 7199
Tpwm = ( (ARR + 1) * (PSC + 1) ) / Tclk = (7200*10000) / 72 000 000 = 1s

占空比:

Duty circle = TIM3->CCR1 / ARR (單位:%)

二、STM32Cube MX配置

基本配置可以參考:STM32 CubeMx教程 – 基礎(chǔ)知識(shí)及配置使用教程

配置RCC,配置為外部晶振模式

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

配置SYS ,Debug為Serial Wire

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

配置TIM,設(shè)置為內(nèi)部時(shí)鐘,選擇通道一為PWM輸出模式,正好對(duì)應(yīng)到PA8,用于輸出呼吸燈

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)
STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

配置PWM的具體參數(shù),預(yù)分頻系數(shù)為 71,自動(dòng)重裝載值為 499,定時(shí)器溢出頻率,即PWM的周期,就是 72MHz/(71+1)/(499+1) = 2kHz

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

Mode: PWM模式1或模式2

Pulse: 占空比;對(duì)應(yīng)捕獲/比較寄存器2(TIMx_CCR2)中的CCR2[15:0]。

Output compare preload: 輸出自動(dòng)比較;對(duì)應(yīng)捕獲/比較模式寄存器1中的OC2PE位。輸出比較2預(yù)裝載使能

Fast Mode: PWM脈沖快速輸出;對(duì)應(yīng)捕獲/比較模式寄存器1中的OC2FE位。輸出比較2快速使能。

CH Polarity: 有效電平;對(duì)應(yīng)捕獲/比較使能寄存器(TIMx_CCER)中的CC2P位。定義輸出極性。

配置時(shí)鐘樹

STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)

三、代碼詳解

涉及到的HAL庫函數(shù):

HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);  //開啟PWM輸出

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,50);  //設(shè)置默認(rèn)的占空比值

代碼示例:

int main(void)
{
  /* USER CODE BEGIN 1 */
	uint8_t pwm_value=0;   //PWM占空比
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  /* USER CODE BEGIN 2 */	
  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);	//使能TIM1的PWM Channel1 輸出
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
		while (pwm_value < 500)
	  {
		  pwm_value++;
		  __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwm_value);    //修改比較值,修改占空比
//		  TIM1->CCR1 = pwm_value;    //與上方作用相同,直接修改寄存器
		  HAL_Delay(1);
	  }
	  while (pwm_value)
	  {
		  pwm_value--;
		  __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwm_value);    //修改比較值,修改占空比
//		  TIM1->CCR1 = pwmVal;    	 //與上方作用相同,直接修改寄存器
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
  }
  /* USER CODE END 3 */
}

附錄

本文涉及到的代碼:STM32 HAL庫 PWM例程文章來源地址http://www.zghlxwxcb.cn/news/detail-428174.html

到了這里,關(guān)于STM32 HAL庫 STM32CubeMX -- PWM(呼吸燈)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 開源!自制一個(gè)桌面寵物(STM32CUBEMX HAL庫 PWM波 小項(xiàng)目)

    開源!自制一個(gè)桌面寵物(STM32CUBEMX HAL庫 PWM波 小項(xiàng)目)

    原視頻: 好,自制一個(gè)桌面寵物!_嗶哩嗶哩_bilibili 基礎(chǔ)所需 : 基礎(chǔ)電路認(rèn)識(shí),C語言,STM32開發(fā),STM32CUBEIDE或CUBEMX和Keil使用(重要),一點(diǎn)點(diǎn)藝術(shù)細(xì)胞、一點(diǎn)點(diǎn)耐心。 CAUTION:本文重點(diǎn)在代碼部分的開源,是基于HAL庫。硬件手工部分不出教程(沒必要)可以直接看視頻P2,文

    2024年02月04日
    瀏覽(73)
  • 【11】STM32·HAL庫開發(fā)-STM32CubeMX簡介、安裝 | 新建STM32CubeMX工程步驟

    【11】STM32·HAL庫開發(fā)-STM32CubeMX簡介、安裝 | 新建STM32CubeMX工程步驟

    ??STM32CubeMX是ST開發(fā)的一款圖形配置工具,可通過配置自動(dòng)生成 初始化代碼 (并不包括邏輯代碼)。以下是STM32CubeMX官方宣傳圖片,適用于Windows和macOS系統(tǒng),用于生成初始化代碼,一個(gè)圖形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片,初始化代碼

    2024年02月17日
    瀏覽(57)
  • STM32開發(fā)——簡介、開發(fā)環(huán)境(Keil5、CubeMX)、HAL庫

    STM32開發(fā)——簡介、開發(fā)環(huán)境(Keil5、CubeMX)、HAL庫

    目錄 1.簡介-初識(shí)STM32 2.開發(fā)環(huán)境 2.1使用Keil5 ?2.2使用STM32CubeMX? 3.標(biāo)準(zhǔn)庫與HAL庫區(qū)別 4.推挽輸出與開漏輸出 什么是單片機(jī)? 單片機(jī)(Single-Chip Microcomputer)是一種集成電路芯片,把具有數(shù)據(jù)處理能力的中央處 理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)

    2024年02月16日
    瀏覽(24)
  • stm32之PWM呼吸燈

    stm32之PWM呼吸燈

    ????????呼吸燈是燈從漸亮到漸滅周而復(fù)始形成的一個(gè)效果。由于51沒有PWM所以需要定時(shí)器模擬PWM才能實(shí)現(xiàn)呼吸燈的效果,但是stm32的通用定時(shí)器是有PWM模式的,所以不需要再用軟件模擬,精準(zhǔn)度也高。 本實(shí)驗(yàn)用的基于stm32f103C8t6。在PB8引腳上接了一個(gè)led, led的另一端接到

    2024年02月05日
    瀏覽(13)
  • STM32自學(xué)?PWM驅(qū)動(dòng)LED呼吸燈

    常用函數(shù)簡單說明 ①用來配置輸出比較模塊 ?TIM_OC1Init() ? ? (初始化)? ? ? ? ? ? ?TIM_OC2Init() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM_OC3Init() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM_OC4Init() ②TIM_OCStructInit();用來給輸出比較結(jié)構(gòu)體賦一個(gè)默認(rèn)值 ③用來配置強(qiáng)制輸出模式 ?TIM

    2024年02月19日
    瀏覽(18)
  • stm32定時(shí)器輸出pwm&IO口模擬pwm——呼吸燈

    stm32定時(shí)器輸出pwm&IO口模擬pwm——呼吸燈

    什么是pwm波?pwm就是脈沖寬度調(diào)制,就是占空比可變的脈沖波形,通過改變占空比,輸出不同的pwm波,就能實(shí)現(xiàn)許多有趣的功能,比如說我們生活中常見的呼吸燈就是通過這樣實(shí)現(xiàn)的。接下來我們就以呼吸燈為例,學(xué)習(xí)stm32通過定時(shí)器輸出pwm波和io口模擬輸出pwm波。 控制方式就

    2024年01月18日
    瀏覽(21)
  • STM32自學(xué)歷程——PWM呼吸燈的實(shí)現(xiàn)(下)

    STM32自學(xué)歷程——PWM呼吸燈的實(shí)現(xiàn)(下)

    成功實(shí)現(xiàn)LED燈的呼吸效果,先由暗到亮,再由亮到暗,以此循環(huán)往復(fù)。 VID20240116160256 因?yàn)椋琍WM部分是掛靠在定時(shí)器里面的,所以代碼必須要先初始化定時(shí)器,當(dāng)然初始化定時(shí)器就可以直接用之前的定時(shí)器初始化,這里不再需要中斷NVIC模塊,所以可以直接去掉。 定時(shí)器初始化

    2024年01月23日
    瀏覽(17)
  • 基于STM32利用PWM完成呼吸燈的實(shí)現(xiàn)

    基于STM32利用PWM完成呼吸燈的實(shí)現(xiàn)

    1.高級(jí)控制定時(shí)器功能實(shí)現(xiàn)框圖 其中分為6個(gè)板塊:①時(shí)鐘源②控制器 ③時(shí)基單元 ④輸入捕獲 ⑤輸出比較 ⑥斷路功能 2.pwm的定義 pwm是???????一種模擬控制方式,根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實(shí)現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時(shí)間

    2024年02月03日
    瀏覽(14)
  • 嵌入式系統(tǒng)開發(fā)13——STM32輸出PWM實(shí)現(xiàn)呼吸燈

    嵌入式系統(tǒng)開發(fā)13——STM32輸出PWM實(shí)現(xiàn)呼吸燈

    本文主要介紹在STM32F103C8T6上,利用定時(shí)器輸出PWM波形,進(jìn)而驅(qū)動(dòng)LED實(shí)現(xiàn)呼吸燈。 使用TIM3和TIM4,分別輸出一個(gè)PWM波形,PWM的占空比隨時(shí)間變化,去驅(qū)動(dòng)你外接的一個(gè)LED以及最小開發(fā)板上已焊接的LED(固定接在 PC13 GPIO端口),實(shí)現(xiàn)2個(gè) LED呼吸燈的效果。 脈沖寬度調(diào)制(PWM) ,是

    2023年04月08日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包