在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32CUBEMX驅動低壓步進器電機驅動器STSPIN220(3)----定時器中斷產生指定數量脈沖

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2023-12-01 15:26 ? 次閱讀

概述

步進電機控制過程中,為了實現精確的位置和速度控制,經常需要輸出指定數量的脈沖。這就需要使用定時器功能來生成PWM脈沖信號。本文將詳細介紹如何利用STM32CUBEMX配置定時器以輸出指定數量的PWM脈沖。
定時器是STM32微控制器的一個重要功能模塊,可用于生成各種定時和計數操作。通過合理配置定時器的參數和模式,我們可以實現精確的脈沖輸出。

最近在弄ST的課程,需要樣片的可以加群申請:615061293 。

在這里插入圖片描述

樣品申請

https://www.wjx.top/vm/PpC1kRR.aspx

視頻教學

https://www.bilibili.com/video/BV1k94y1C7Gw/

完整代碼下載

https://download.csdn.net/download/qq_24312945/88184732

STM32CUBEMX配置

一種比較簡單的方式是利用定時器中斷來產生固定數量的脈沖。在這種方法中,我們可以將定時器配置為PWM輸出模式,并在PWM輸出的中斷中進行計數操作。當計數達到設定的脈沖個數后,我們可以停止PWM輸出,從而實現精確控制。下面以定時器1的通道4為例,介紹具體的步驟:
在STM32CUBEMX中,選擇定時器1,并將其配置為PWM輸出模式。確保選擇了正確的定時器通道(通道4)。
在這里插入圖片描述

配置定時器1的時鐘源和預分頻因子。根據應用的要求和系統時鐘頻率,選擇適當的時鐘源和預分頻因子,以獲得所需的脈沖頻率。將定時器1的時鐘源和預分頻因子配置為適合您的應用的值。
PWM頻率計算如下所示。
在這里插入圖片描述

在上述配置中,將定時器1的預分頻系數設置為48-1,自動重載值設置為1000-1。根據這些配置,PWM的頻率可以計算為48,000,000 / ((48-1+1) * (1000-1+1)) = 1000Hz,即1kHz。
在定時器中,通道的 "pulse"(脈沖)是指定時器輸出的信號的一種特性。每個定時器通道都可用于生成脈沖信號,而 "pulse" 通常指的是單個脈沖的持續時間。在這種設置中,我們將脈沖的占空比配置為50%,因此設置為500-1。
在這里插入圖片描述
當PWM脈沖完成時,我們需要觸發一個回調函數。HAL_TIM_PWM_PulseFinishedCallback函數是用于在非阻塞模式下處理PWM脈沖完成的回調函數。

在這里插入圖片描述

為了觸發HAL_TIM_PWM_PulseFinishedCallback回調函數,需要啟用Capture Compare Interrupt中斷。

在這里插入圖片描述

產生固定數量的PWM

首先,可以定義一個全局變量,該變量用于控制輸出脈沖的個數。通過操作該變量,我們可以在程序中靈活地控制所需的脈沖數量。

/* USER CODE BEGIN 0 */
void MX_GPIO_Init_mode3(void);
uint16_t STSPIN220_PwmNum;
uint8_t	STSPIN220_flag=0;//電機完成步數標志位
uint8_t	STSPIN220_Dir_flag=0;//方向
/* USER CODE END 0 */

首先,使用MX_TIM1_Init()初始化定時器1。
接下來,當需要輸出脈沖時,將所需的脈沖數量賦值給變量STSPIN220_PwmNum。
最后,使用HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_4)啟動定時器1的PWM中斷輸出。

STSPIN220_PwmNum = 20;
MX_TIM1_Init();
HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_4);

HAL_TIM_PWM_PulseFinishedCallback回調函數的實現部分。
在函數內部,如果STSPIN220_PwmNum的值為0,即已經輸出了所需的脈沖個數,那么通過調HAL_TIM_PWM_Stop_IT(&htim1, TIM_CHANNEL_4)停止定時器1的PWM中斷輸出,以達到停止脈沖輸出的目的。
其次對全局變量STSPIN220_PwmNum進行遞減操作,表示完成了一個脈沖的輸出就進行減1。接著,通過條件判斷if (STSPIN220_PwmNum == 0),檢查是否已經輸出了指定數量的脈沖。
這段代碼的作用是在每次PWM波形周期完成時,更新全局變量STSPIN220_PwmNum的值,并在達到指定的脈沖數量后停止PWM中斷輸出。通過這種方式,可以實現精確控制輸出脈沖個數的功能。

/* USER CODE BEGIN 4 */
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
	 if(STSPIN220_PwmNum==0)
	 {
			HAL_TIM_PWM_Stop_IT(&htim1,TIM_CHANNEL_4);
			STSPIN220_flag=1;//電機完成步數標志位
	 }
	STSPIN220_PwmNum--;
}

/* USER CODE END 4 */

產生波形如下所示,可以看到有20個脈沖。
在這里插入圖片描述

電機設置

這里使用的電機為步進角為18°,1:30的減速比,在這種情況下,如果步進電機的步進角為18°,減速比為1:30,那么旋轉一周所需的脈沖數量可以計算為:
旋轉一周所需脈沖 = (360 / 步進角) * 減速比 * 細分數
其中,步進角以度為單位,減速比是相對于電機輸出軸和實際應用中的旋轉軸之間的比率,細分數表示步進電機驅動器將一個步進角分割成多少個微步。
根據這個公式來計算出所需的脈沖數量,從而實現旋轉一周的控制。

在這里插入圖片描述

STSPIN220初始化

STSPIN220修改后初始化如下所示。

/* USER CODE BEGIN 2 */
	MX_GPIO_Init_mode3();
	HAL_Delay(100);

	STSPIN220_SetStepMode(0);//mode1-mode4都關閉
	STSPIN220_enable(0);//使能操作 1使能0失能
	STSPIN220_Stby(1);//低功耗模式 1開啟低功耗0關閉低功耗
	HAL_Delay(100);

	STSPIN220_SetStepMode(2);//細分操作
	STSPIN220_Stby(0);//低功耗模式 1開啟低功耗0關閉低功耗,加載mode
	HAL_Delay(100);//等待電平穩定
	STSPIN220_setDirection(0);//0反1正
	HAL_Delay(100);//等待電平穩定
	STSPIN220_enable(1);//使能操作 1使能0失能
	HAL_Delay(100);

	STSPIN220_PwmNum = 600*2;//步進角為18°,1:30的減速比,細分2則需要走(360/18)*30*2為一圈	

	MX_TIM1_Init();
//	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4);
	HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_4);
  /* USER CODE END 2 */

主程序

實現電機循環正轉1圈反轉1圈代碼如下所示。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(STSPIN220_flag)
		{
				HAL_Delay(1000);
//				STSPIN220_Stby(1);//低功耗模式 1開啟低功耗0關閉低功耗
				STSPIN220_flag=0;		
			if(STSPIN220_Dir_flag==0)
			{
				STSPIN220_Dir_flag=1;
				STSPIN220_setDirection(1);//0反1正
				HAL_Delay(100);
				STSPIN220_PwmNum = 600*2;//步進角為18°,1:30的減速比,細分2則需要走(360/18)*30*2為一圈	
				HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_4);
			}
			else
			{
                
				STSPIN220_Dir_flag=0;
				STSPIN220_setDirection(0);//0反1正
				HAL_Delay(100);
				STSPIN220_PwmNum = 600*2;//步進角為18°,1:30的減速比,細分2則需要走(360/18)*30*2為一圈	
				HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_4);
			}
		}
		HAL_Delay(10);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5186

    瀏覽量

    213939
  • 步進電機
    +關注

    關注

    150

    文章

    3111

    瀏覽量

    147486
  • 定時器
    +關注

    關注

    23

    文章

    3248

    瀏覽量

    114800
  • 電機驅動器
    +關注

    關注

    16

    文章

    645

    瀏覽量

    64680
收藏 人收藏

    評論

    相關推薦

    STM32CubeMx入門教程(3):定時器的使用

    導語“ 使用STM32CubeMx 生成初始化定時器代碼,實現定時器特定定時
    發表于 07-11 15:22 ?4077次閱讀
    <b class='flag-5'>STM32CubeMx</b>入門教程(<b class='flag-5'>3</b>):<b class='flag-5'>定時器</b>的使用

    基于STM32CUBEMX驅動低壓步進電機驅動器STSPIN220(1)----套件概述

    STM32C011F4Px_STSPIN220 是一款基于 STM32C011F4Px 的低壓步進電機
    的頭像 發表于 12-01 15:16 ?683次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>低壓</b><b class='flag-5'>步進</b><b class='flag-5'>器</b><b class='flag-5'>電機</b><b class='flag-5'>驅動器</b><b class='flag-5'>STSPIN220</b>(1)----套件概述

    基于STM32CUBEMX驅動低壓步進電機驅動器STSPIN220(2)----驅動STSPIN220

    本文檔的目標是提供關于使用STM32CubeMX驅動低壓步進電機驅動器
    的頭像 發表于 12-01 15:25 ?1036次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>低壓</b><b class='flag-5'>步進</b><b class='flag-5'>器</b><b class='flag-5'>電機</b><b class='flag-5'>驅動器</b><b class='flag-5'>STSPIN220</b>(2)----<b class='flag-5'>驅動</b><b class='flag-5'>STSPIN220</b>

    stm32定時器通過驅動器控制多個步進電機 精選資料下載

    摘要如果使用驅動器如TB6600、DM542等驅動步進電機,需要通過PWM控制。每個PWM脈沖驅動
    發表于 07-08 10:04

    Stm32CubeMx基本定時器的概念

    Stm32CubeMx基本定時器基本定時器概念Stm32CubeMx 配置基本配置配置LED燈配置晶振時鐘配置串口時鐘數配置TIM6定時器
    發表于 08-18 08:18

    LL庫如何實現STM32使用定時器主從模式輸出指定數量脈沖

    LL庫如何實現STM32使用定時器主從模式輸出指定數量脈沖
    發表于 12-21 07:25

    怎樣使用定時器輸出指定個數的PWM脈沖

    步進電機控制時,經常會遇到需要輸出指定個數的脈沖來實現精確控制。本篇文章將介紹怎樣使用定時器輸出指定
    發表于 01-06 06:19

    【MCU】基于STM32CubeMX定時器中斷實現LED閃爍

    基于STM32CubeMX定時器中斷實現 LED 閃爍本實驗基于STM32CubeMX實現對STM32開發板的配置,通過
    發表于 10-29 11:06 ?20次下載
    【MCU】基于<b class='flag-5'>STM32CubeMX</b><b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>實現LED閃爍

    STM32CUBEMX配置教程(十三)STM32定時器觸發的固定頻率DAC輸出(使用DMA)

    STM32CUBEMX配置教程(十三)STM32定時器觸發的固定頻率DAC輸出(使用DMA)
    發表于 11-24 14:06 ?46次下載
    <b class='flag-5'>STM32CUBEMX</b>配置教程(十三)<b class='flag-5'>STM32</b>的<b class='flag-5'>定時器</b>觸發的固定頻率DAC輸出(使用DMA)

    STM32 CubeMX學習:3. 定時器閃爍LED

    STM32 CubeMX學習:3. 定時器閃爍LED 系列文章目錄前期的準備點亮 LED閃爍 LED定時器閃爍LED未完待續…文章目錄
    發表于 11-25 10:21 ?13次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>CubeMX</b>學習:<b class='flag-5'>3</b>. <b class='flag-5'>定時器</b>閃爍LED

    STM32Cube_12】使用通用定時器產生PWM驅動蜂鳴器

    本篇詳細的記錄了如何使用STM32CubeMX配置STM32L431RCT6的通用定時器外設,產生PWM驅動無源蜂鳴器。
    發表于 11-26 15:36 ?11次下載
    【<b class='flag-5'>STM32</b>Cube_12】使用通用<b class='flag-5'>定時器</b><b class='flag-5'>產生</b>PWM<b class='flag-5'>驅動</b>蜂鳴器

    STM32CubeMX_定時器中斷_PWM

    文章目錄前言STM32CubeMX新建工程基本定時器配置生成代碼定時器中斷PWM配置工程代碼前言STM32CubeMX_環境搭建_GPIO_
    發表于 12-05 13:51 ?13次下載
    <b class='flag-5'>STM32CubeMX</b>_<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>_PWM

    基于HAL庫定時器中斷的閉環步進電機驅動與精準控制脈沖

    STM32控制步進電機:基于HAL庫定時器中斷的閉環步進電機
    發表于 03-16 09:28 ?4次下載
    基于HAL庫<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>的閉環<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅動</b>與精準控制<b class='flag-5'>脈沖</b>數

    基于定時器中斷的ULN2003驅動器/步進電機驅動程序

    STM32控制步進電機:基于定時器中斷的ULN2003驅動器/
    發表于 03-16 09:28 ?10次下載
    基于<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>的ULN2003<b class='flag-5'>驅動器</b>/<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅動</b>程序

    STM32定時器中斷產生PWM控制步進電機

    電機可以使用PWM、定時器中斷、延時,這里用的就是定時器中斷來讓它轉動。 一、硬件部分 1.使用的硬件 板子用的是正點原子的
    發表于 03-23 09:56 ?3次下載
    用<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b><b class='flag-5'>中斷</b><b class='flag-5'>產生</b>PWM控制<b class='flag-5'>步進</b><b class='flag-5'>電機</b>
    主站蜘蛛池模板: 午夜色片| 日本亚洲欧美美色| 精品福利| 老师受年下高h男| 在线亚洲成人| 久青草免费在线视频| 国产成人精品怡红院| 偷操| 亚洲综合色在线| 日本骚视频| 午夜看片影院在线观看| 2021天天操| 日本三级日本三级人妇三级四 | 美女被强插| 毛片录像| 久久国产乱子伦精品免费一| 超级淫小黄文大全很污的那种 | 日本人69xxⅹ69| 天堂网. www在线资源| 97人人做人人爱| 中文字幕一区二区三区不卡 | 午夜小视频网站| 唐人社电亚洲一区二区三区| 香蕉婷婷| 18视频网站在线观看| 曰本a| 久久久久久久久久久9精品视频| 日本操穴| 啪啪啦资源站永久| 久久综合久久久久| 147西西人体大胆免费网| www色在线| 国产成人一区二区在线不卡| 免费视频在线播放| 女人被狂躁视频免费网站| 亚洲资源在线视频| 嫩草网| 国产成年女一区二区三区| 亚洲一区中文| 狠狠色成人综合首页| h网址在线观看|