色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內(nèi)不再提示

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

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

概述

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

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

在這里插入圖片描述

樣品申請

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

視頻教學

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

完整代碼下載

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

STM32CUBEMX配置

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

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

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

在這里插入圖片描述

為了觸發(fā)HAL_TIM_PWM_PulseFinishedCallback回調(diào)函數(shù),需要啟用Capture Compare Interrupt中斷。

在這里插入圖片描述

產(chǎn)生固定數(shù)量的PWM

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

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

首先,使用MX_TIM1_Init()初始化定時器1。
接下來,當需要輸出脈沖時,將所需的脈沖數(shù)量賦值給變量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回調(diào)函數(shù)的實現(xiàn)部分。
在函數(shù)內(nèi)部,如果STSPIN220_PwmNum的值為0,即已經(jīng)輸出了所需的脈沖個數(shù),那么通過調(diào)HAL_TIM_PWM_Stop_IT(&htim1, TIM_CHANNEL_4)停止定時器1的PWM中斷輸出,以達到停止脈沖輸出的目的。
其次對全局變量STSPIN220_PwmNum進行遞減操作,表示完成了一個脈沖的輸出就進行減1。接著,通過條件判斷if (STSPIN220_PwmNum == 0),檢查是否已經(jīng)輸出了指定數(shù)量的脈沖。
這段代碼的作用是在每次PWM波形周期完成時,更新全局變量STSPIN220_PwmNum的值,并在達到指定的脈沖數(shù)量后停止PWM中斷輸出。通過這種方式,可以實現(xiàn)精確控制輸出脈沖個數(shù)的功能。

/* 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;//電機完成步數(shù)標志位
	 }
	STSPIN220_PwmNum--;
}

/* USER CODE END 4 */

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

電機設置

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

在這里插入圖片描述

STSPIN220初始化

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

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

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

	STSPIN220_SetStepMode(2);//細分操作
	STSPIN220_Stby(0);//低功耗模式 1開啟低功耗0關(guān)閉低功耗,加載mode
	HAL_Delay(100);//等待電平穩(wěn)定
	STSPIN220_setDirection(0);//0反1正
	HAL_Delay(100);//等待電平穩(wěn)定
	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 */

主程序

實現(xiàn)電機循環(huán)正轉(zhuǎn)1圈反轉(zhuǎn)1圈代碼如下所示。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(STSPIN220_flag)
		{
				HAL_Delay(1000);
//				STSPIN220_Stby(1);//低功耗模式 1開啟低功耗0關(guān)閉低功耗
				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 */

審核編輯:湯梓紅

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

    關(guān)注

    114

    文章

    5181

    瀏覽量

    213799
  • 步進電機
    +關(guān)注

    關(guān)注

    150

    文章

    3109

    瀏覽量

    147443
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114719
  • 電機驅(qū)動器
    +關(guān)注

    關(guān)注

    16

    文章

    642

    瀏覽量

    64669
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

    Stm32CubeMx基本定時器的概念

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

    LL庫如何實現(xiàn)STM32使用定時器主從模式輸出指定數(shù)量脈沖

    LL庫如何實現(xiàn)STM32使用定時器主從模式輸出指定數(shù)量脈沖
    發(fā)表于 12-21 07:25

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

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

    【MCU】基于STM32CubeMX定時器中斷實現(xiàn)LED閃爍

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

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

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

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

    STM32 CubeMX學習:3. 定時器閃爍LED 系列文章目錄前期的準備點亮 LED閃爍 LED定時器閃爍LED未完待續(xù)…文章目錄
    發(fā)表于 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】使用通用定時器產(chǎn)生PWM驅(qū)動蜂鳴器

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

    STM32CubeMX_定時器中斷_PWM

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

    基于HAL庫定時器中斷的閉環(huán)步進電機驅(qū)動與精準控制脈沖數(shù)

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

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

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

    STM32定時器中斷產(chǎn)生PWM控制步進電機

    電機可以使用PWM、定時器中斷、延時,這里用的就是定時器中斷來讓它轉(zhuǎn)動。 一、硬件部分 1.使用的硬件 板子用的是正點原子的
    發(fā)表于 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'>產(chǎn)生</b>PWM控制<b class='flag-5'>步進</b><b class='flag-5'>電機</b>
    主站蜘蛛池模板: 久拍国产在线观看| 黄页网址大全免费观看| 国产麻豆精品久久一二三| 国产精品色欲AV亚洲三区软件| 国产婷婷午夜精品无码A片| 精品日产1区2卡三卡麻豆| 久久亚洲精品无码A片大香大香| 蜜桃TV成人网站免费打开| 泡妞高手在都市免费观看| 偷窥美女3| 一级做a爰片久久免费| 97干97吻| 国产CHINESE HD精品| 国产真实强被迫伦姧女在线观看 | 99久久国产视频| 大胆国模一区二区三区伊人 | 寂寞夜晚免费观看视频| 考好老师让你做一次H| 日本强好片久久久久久AAA| 五花大绑esebdsm国产| 久久毛片免费看一区二区三区| 草莓视频在线观看完整高清免费| 亚洲 欧美 制服 视频二区| 伦理片天堂eeuss影院2o12| 国产精品一区二区人妻无码 | 姑娘日本大全免费观看版中文翻译| 亚洲电影成人 成人影院| 欧美美女一区二区三区| 秋霞电影网午夜鲁丝片无码| 男人叼女人| 亚洲精品伊人久久久久| 超碰视频在线观看| 久久亚洲人成网站| 亚洲国产精品无码AV久久久| 背着老婆爆操性感小姨子| 久久中文字幕亚洲| 羞羞答答影院在线| 国产成人免费高清在线观看| 欧美videqsdesex0| 97国产蝌蚪视频在线观看| 国产亚洲中文字幕视频|