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

STM32初學(xué)入門筆記(2):STM32CubeMX配置STM32輸出可調(diào)PWM方波

這篇具有很好參考價(jià)值的文章主要介紹了STM32初學(xué)入門筆記(2):STM32CubeMX配置STM32輸出可調(diào)PWM方波。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

PWM是一種應(yīng)用廣泛的利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種技術(shù)(即對脈沖寬度的控制)PWM同時(shí)也是驅(qū)動(dòng)蜂鳴器,驅(qū)動(dòng)舵機(jī),通信等重要的一環(huán),而對于初學(xué)者而言,點(diǎn)完燈的下一個(gè)程序就是驅(qū)動(dòng)蜂鳴器,本篇將講述如何使用及調(diào)整PWM輸出頻率,占空比

工程文件可入Q群:659512171獲取

?PWM簡介:

對于STM32,PWM輸出依靠定時(shí)器,而在STM32F103c8t6中,共有4個(gè)定時(shí)器可供輸出,每個(gè)都可以配置4路輸出,所以總共可以輸出16路PWM,本篇只介紹和應(yīng)用單路PWM輸出。

工程開始:

新建工程:

打開STM32CubeMX,新建工程,配置外部高速時(shí)鐘:

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

?stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

?輸入需要的頻率,敲擊回車,STM32CubeMX會(huì)自動(dòng)配置(在這里我把時(shí)鐘頻率設(shè)為了最高72,但其實(shí)不設(shè)也行,在后面的分頻改一下就好了)

配置調(diào)試:

這里一定要選好,不然會(huì)導(dǎo)致芯片自鎖

配置工程文件:

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

配置計(jì)時(shí)器:

?下面對這其中的3個(gè)值進(jìn)行說明:

預(yù)分頻(psc):CPU運(yùn)行頻率先經(jīng)過它分頻再進(jìn)入計(jì)時(shí)器,如CPU運(yùn)行在 x Mhz 下,預(yù)分頻為?y,那進(jìn)入計(jì)時(shí)器的頻率也就為 x/(y+1) Mhz(因?yàn)閺?計(jì)數(shù),所以是y+1)。

自動(dòng)重裝值(arr):指一次周期的計(jì)數(shù)長度

脈沖長度:指輸出脈沖的計(jì)數(shù)長度

在這里就可以知道怎么調(diào)節(jié)頻率于占空比了,首先,在預(yù)分頻(y)和主頻(x)一定的情況下,要保持輸出 a% 占空比的?b Hz 的方波,那么自動(dòng)重裝值就應(yīng)該是 x / (y+1) /?b ,而脈沖長度也就應(yīng)該是 (x / (y+1) / b) * a%,所以只需要寫一個(gè)函數(shù)調(diào)節(jié)自動(dòng)重裝值和脈沖長度就可以實(shí)現(xiàn)調(diào)節(jié)頻率和占空比的目的了。stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

這里我分別把預(yù)分頻、自動(dòng)重裝值、脈沖長度設(shè)置為了 999、1440、720,所以頻率和占空比分別應(yīng)為:72,000,000 / (999+1)/1440 = 50 (Hz),1440?/ 720 = 50%

然后點(diǎn)擊右上角的GENERATE CODE生成文件,然后打開。

Keil配置:?

頻率占空比調(diào)節(jié)方式一:

?打開main.c,tim.c,tim.h文件:

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記( .h文件可以在引用中通過右鍵打開)

找到 "MX_TIM2_Init"?函數(shù)stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

?可以看到我們設(shè)置的參數(shù)都在這個(gè)初始化函數(shù)里了,接下來只需要設(shè)置2個(gè)變量替換其中2個(gè)具體值。

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

將上面這一段代碼復(fù)制到下面的? /* USER CODE BEGIN 1 */? 和? /* USER CODE END 1 */? 區(qū)間里,并把上面這一段代碼注釋掉(刪掉也可以),

接著,更改一下后面括號中的數(shù)據(jù)(原本是?void,無類型,現(xiàn)在要換成數(shù)據(jù)),只需要設(shè)置自動(dòng)重裝值和脈沖長度的變量:

/* USER CODE BEGIN 1 */
void MX_TIM2_Init(uint16_t arr, uint16_t pul)
{

  /* USER CODE BEGIN TIM2_Init 0 */

  /* USER CODE END TIM2_Init 0 */

  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  /* USER CODE BEGIN TIM2_Init 1 */

  /* USER CODE END TIM2_Init 1 */
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 1000;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = arr;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = pul;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM2_Init 2 */

  /* USER CODE END TIM2_Init 2 */
  HAL_TIM_MspPostInit(&htim2);

}

/* USER CODE END 1 */

另外,還需要在tim.h中更改對此函數(shù)的聲明,不然是報(bào)錯(cuò)不通過的,也無法在主程序中引用,同樣把函數(shù)聲明移到用戶區(qū)域里,并注釋掉:

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

/* USER CODE BEGIN Prototypes */
void MX_TIM2_Init(uint16_t arr, uint16_t pul);
/* USER CODE END Prototypes */

?如果你覺得每次都寫?HAL_TIM_PWM_Start 和 HAL_TIM_PWM_Stop?太麻煩,可以再加一個(gè)PWM開啟/關(guān)閉函數(shù),同樣是在用戶區(qū)域?qū)懭缦潞瘮?shù):

void PWM (int onoff)
{
	if (onoff == 0){
		HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
	}else if (onoff == 1){
		HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
	}
}

?以及函數(shù)聲明:

void PWM (int onoff);

在這里當(dāng)數(shù)據(jù)為0時(shí),停止PWM,當(dāng)為1時(shí),開啟PWM?

最后,tim.c中的用戶端應(yīng)是如下代碼:

/* USER CODE BEGIN 1 */
void MX_TIM2_Init(uint16_t arr, uint16_t pul)
{

  /* USER CODE BEGIN TIM2_Init 0 */

  /* USER CODE END TIM2_Init 0 */

  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  /* USER CODE BEGIN TIM2_Init 1 */

  /* USER CODE END TIM2_Init 1 */
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 1000;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = arr;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = pul;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM2_Init 2 */

  /* USER CODE END TIM2_Init 2 */
  HAL_TIM_MspPostInit(&htim2);

}

void PWM (int onoff)
{
	if (onoff == 0){
		HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
	}else if (onoff == 1){
		HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
	}
}
/* USER CODE END 1 */

整個(gè)tim.h應(yīng)是如下代碼:

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file    tim.h
  * @brief   This file contains all the function prototypes for
  *          the tim.c file
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __TIM_H__
#define __TIM_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

extern TIM_HandleTypeDef htim2;

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

//void MX_TIM2_Init(void);

void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);

/* USER CODE BEGIN Prototypes */
void MX_TIM2_Init(uint16_t arr, uint16_t pul);
void PWM (int onoff);
/* USER CODE END Prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __TIM_H__ */

最后,在main.c中引用就行了,記得要把初始化的參數(shù)填上去,這里給出一個(gè)實(shí)例(整個(gè)int?main函數(shù))?:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* 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_TIM2_Init(1440,36);
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

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

    /* USER CODE BEGIN 3 */
		PWM(1);
		HAL_Delay(1500);
		PWM(0);
		MX_TIM2_Init(1440,180);
		PWM(1);
		HAL_Delay(1500);
		PWM(0);
		MX_TIM2_Init(1440,36);
  }
  /* USER CODE END 3 */
}

?這里先是初始化PWM輸出為50HZ,脈寬0.5ms(即2.5%占空比)的信號,然后打開PWM輸出,延時(shí)1.5秒后關(guān)閉,再配置為50Hz,脈寬2.5ms(即12.5%占空比)的信號,然后再次打開輸出,延時(shí)1.5秒后關(guān)閉并重新配置為50HZ,脈寬1ms的信號,這兩個(gè)分別是舵機(jī)的0°,180°信號,可以讓連接在tim2的一通道(即PA0)的舵機(jī)在0°到180°間重復(fù)旋轉(zhuǎn),效果如下:

stm32cubemx輸出pwm,STM32,stm32,單片機(jī),筆記

相信大家也看到了,這種方式來調(diào)節(jié)頻率和占空比麻煩且會(huì)有一段時(shí)間的空缺,會(huì)影響到對波形比較敏感的設(shè)備,所以接下來介紹第二種方式

方式二:

前面過程的都與第一種方式相同,可以完全保留,第一種方式的調(diào)節(jié)函數(shù)可以作為初始化使用,此方式無需編寫任何函數(shù),調(diào)用了HAL庫中的修改CCR(儲(chǔ)存脈沖長度數(shù)值)和ARR(儲(chǔ)存自動(dòng)重裝值)寄存器的函數(shù),接下來直接上代碼:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* 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_TIM2_Init(1440,36);
  /* USER CODE BEGIN 2 */
  PWM(1);
  /* USER CODE END 2 */

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

    /* USER CODE BEGIN 3 */
	HAL_Delay(1500);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,180); //修改CCR寄存器
	HAL_Delay(1500);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,36);
    /*
    __HAL_TIM_SET_AUTORELOAD(&htim2,1440); //修改ARR寄存器,沒有通道限制,整個(gè)定時(shí)器一起改
    */
  }
  /* USER CODE END 3 */
}

?上面程序?qū)崿F(xiàn)效果與第一種相同,但此程序可以在PWM運(yùn)行時(shí)更改,無需關(guān)閉PWM,沒有空缺

另外,對于頻率的修改還可以通過改預(yù)分頻系數(shù)來解決,但由于自動(dòng)重裝值與預(yù)分頻之間是連除的關(guān)系,所以一般只修改自動(dòng)重裝值,修改預(yù)分頻系數(shù)的函數(shù)如下:

__HAL_TIM_SET_PRESCALER(TIM_TypeDef* TIMx, uint32_t Prescaler);
/*舉一個(gè)例子:
__HAL_TIM_SET_PRESCALER(&htim2, 1000);
這條語句就是把定時(shí)器二的預(yù)分頻系數(shù)設(shè)為1000
*/

都看到這里了點(diǎn)點(diǎn)關(guān)注再走唄

?交流Q群:659512171文章來源地址http://www.zghlxwxcb.cn/news/detail-630028.html

到了這里,關(guān)于STM32初學(xué)入門筆記(2):STM32CubeMX配置STM32輸出可調(diào)PWM方波的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • STM32 PWM模式與輸出比較模式的區(qū)別。PWM占空比不生效,在STM32CubeMX中配置PWM的兩種模式——藍(lán)橋杯嵌入式

    STM32 PWM模式與輸出比較模式的區(qū)別。PWM占空比不生效,在STM32CubeMX中配置PWM的兩種模式——藍(lán)橋杯嵌入式

    ? ??【藍(lán)橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都已更新完畢,歡迎大家前往訂閱本專題?? ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十三屆

    2023年04月15日
    瀏覽(31)
  • STM32初學(xué)入門筆記(5):使用STM32CubeMX通過SPI,IIC驅(qū)動(dòng)OLED屏幕

    STM32初學(xué)入門筆記(5):使用STM32CubeMX通過SPI,IIC驅(qū)動(dòng)OLED屏幕

    隨著時(shí)代的進(jìn)步,OLED顯示屏成為了繼LCD顯示屏之后的新一代顯示屏技術(shù),OLED具有可視角高,功耗低,厚度薄,耐沖擊、振動(dòng)能力強(qiáng),像素響應(yīng)時(shí)間低等優(yōu)點(diǎn),在嵌入式開發(fā)中,OLED顯示器也是一個(gè)主要的部分,制作OLED顯示模塊的驅(qū)動(dòng)也是學(xué)習(xí)STM32路上的重要一部分,本篇將從

    2024年02月04日
    瀏覽(28)
  • STM32主從模式實(shí)現(xiàn)兩路同步PWM脈沖輸出,頻率、占空比可調(diào)

    STM32主從模式實(shí)現(xiàn)兩路同步PWM脈沖輸出,頻率、占空比可調(diào)

    原理:定時(shí)器1為主模式,定時(shí)器8為從模式,TIM1的定時(shí)器使能操作作為觸發(fā)輸出[TRGO]觸發(fā)TIM8并使能TIM8的計(jì)數(shù)器,同時(shí)輸出兩路頻率、占空比以及脈沖數(shù)量(小于256個(gè),高級定時(shí)器重復(fù)計(jì)數(shù)功能為8位)可調(diào)PWM波形。 關(guān)鍵代碼: 定時(shí)器1(TIM1)設(shè)為主模式: 定時(shí)器2(TIM8)設(shè)為從

    2024年02月13日
    瀏覽(28)
  • STM32 通過PWM輸出一個(gè)方波并通過定時(shí)器輸入捕獲模式測量方波的周期(cubeMX+keil配置)

    STM32 通過PWM輸出一個(gè)方波并通過定時(shí)器輸入捕獲模式測量方波的周期(cubeMX+keil配置)

    前言:本文章用cubeMX和keil來進(jìn)行代碼編寫,實(shí)現(xiàn)STM32的相應(yīng)功能 本文章使用的STM32核心板是STM32H743VIT6,如果使用的是其他的核心板操作過程類似,可以嘗試使用此教程。 (1)首先點(diǎn)擊左側(cè)的Timers ?(2)選擇一個(gè)定時(shí)器配置PWM 我選擇的是TIM5,如上圖 點(diǎn)擊TIM5 Mode的配置如下

    2024年02月19日
    瀏覽(20)
  • 定時(shí)器(PWM輸出)觸發(fā)ADC采樣(DMA)——STM32CubeMX

    定時(shí)器(PWM輸出)觸發(fā)ADC采樣(DMA)——STM32CubeMX

    我用的單片機(jī)是STM32F103CBTX 定時(shí)器:使用PWM輸出的模式 ADC:使用DMA的模式 (在不使用DMA的情況下,定時(shí)器控制ADC進(jìn)行數(shù)據(jù)采集只能是單通道!如果開啟了多通道,讀取到的ADC采集值只會(huì)是最后一個(gè)通道的值!所以,要想使用定時(shí)器控制ADC采集 多通道 , 必須使用DMA ?。??看

    2024年04月10日
    瀏覽(23)
  • 步進(jìn)電機(jī)簡單使用:STM32 PWM輸出固定數(shù)目的脈沖數(shù)(基于CubeMX)

    步進(jìn)電機(jī)簡單使用:STM32 PWM輸出固定數(shù)目的脈沖數(shù)(基于CubeMX)

    使用步進(jìn)電機(jī)之前,我們需要了解步距角的概念:步進(jìn)電機(jī)接收到一個(gè)脈沖轉(zhuǎn)動(dòng)的角度,步進(jìn)電機(jī)步距角通常 為1.8°,即步進(jìn)電機(jī)接收到一個(gè)脈沖轉(zhuǎn)動(dòng)1.8°,則若步進(jìn)電機(jī)接收到360°/1.8°=200個(gè)脈沖,步進(jìn)電機(jī)就能轉(zhuǎn)動(dòng)一圈 步進(jìn)電機(jī)通過驅(qū)動(dòng)器控制,驅(qū)動(dòng)器如下圖所示(都比較

    2024年02月06日
    瀏覽(53)
  • STM32開發(fā)(6)----CubeMX配置PWM

    STM32開發(fā)(6)----CubeMX配置PWM

    本章介紹使用STM32CubeMX對PWM進(jìn)行配置的方法,PWM的基本原理,并通過示波器來測試實(shí)現(xiàn)結(jié)果,如果有LED燈也可以,PWM控制LED燈的亮度。 PWM(Pulse Width Modulation)脈沖寬度調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù)。它是把每一脈沖寬度均相等

    2024年02月03日
    瀏覽(21)
  • STM32 HAL庫 通用定時(shí)器介紹及相關(guān)應(yīng)用例程 定時(shí)器中斷 輸出PWM (點(diǎn)亮LED呼吸燈、輸出PWM、輸入捕獲) CubeMX

    STM32 HAL庫 通用定時(shí)器介紹及相關(guān)應(yīng)用例程 定時(shí)器中斷 輸出PWM (點(diǎn)亮LED呼吸燈、輸出PWM、輸入捕獲) CubeMX

    (部分圖引自于ATK) 前情提要(基本定時(shí)器) 點(diǎn)此進(jìn)入 通用定時(shí)器類別 通用定時(shí)器和基本定時(shí)器相比大致的工作方式是相似的,不過通用定時(shí)器比基本定時(shí)器多了一些很好用的功能,比如: 外部輸入捕獲 輸出比較 輸出PWM 時(shí)鐘源 CubeMX為我們提供了配置時(shí)鐘的非常方便的工

    2024年04月15日
    瀏覽(39)
  • 搭建stm32電機(jī)控制代碼框架(五)——Stm32CubeMx配置PWM

    搭建stm32電機(jī)控制代碼框架(五)——Stm32CubeMx配置PWM

    采樣配置完成后,進(jìn)行PWM的配置。PWM的生成依賴于STM32的TIM1定時(shí)器,其功能完備如下圖所示,電機(jī)控制中主要應(yīng)用其PWM生成功能。 我們當(dāng)前階段的目標(biāo)是生成占空比為50%的三路PWM,其開關(guān)頻率為10kHz。 那么開始CubeMx的配置,依據(jù)stm32f405數(shù)據(jù)手冊中地址總線部分內(nèi)容,TIM1是掛

    2024年02月16日
    瀏覽(27)
  • STM32學(xué)習(xí)筆記(一):輸出PWM——HAL庫

    STM32學(xué)習(xí)筆記(一):輸出PWM——HAL庫

    本篇文章為個(gè)人參考總結(jié)所用,如果錯(cuò)誤還望指出。 涉及的知識: 1、STM32CubeMx的部分使用 2、PWM原理及常用概念 3、用單片機(jī)生成一定頻率的PWM 用到的軟件及單片機(jī): 1、STM32CubeMx 2、IDE: MDK-Keil軟件 3、芯片:STM32F407ZGT6 4、開發(fā)板:正點(diǎn)原子探索者 注:不同型號的單片機(jī)實(shí)現(xiàn)

    2024年02月12日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包