<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

STM32CubeMx配置定時器的編碼器模式

CHANBAEK ? 來源:小李的創客實驗室 ? 作者:小李的創客實驗室 ? 2023-08-21 11:47 ? 次閱讀

STM32CubeMx配置定時器編碼器模式

上次文章寫了編碼器是如何工作的,今天就來用STM32F103C8T6的TIM3的通道1跟通道2編寫一個編碼器識別程序。

編程思路:

A相:TIM3_CH1

B相:TIM3_CH2

SWITCH:PB5(外部中斷的方式)

實現效果:

編碼器順時針旋轉編碼器計數值 +1

編碼器逆時針旋轉編碼器計數值 -1

按下SWITCH編碼器計數值值清 0

話不多說,上教程!

1.配置時鐘

  • 選擇外部高速時鐘源HSE

圖片
在這里插入圖片描述

2.配置SWITCH管腳為外部中斷模式(默認上拉)

  • 選擇中斷模式觸發下降沿有效
  • 默認是上拉輸入
  • 添加用戶標簽為SWITCH

圖片
在這里插入圖片描述

使能NVIC配置

圖片
在這里插入圖片描述

3.配置定時器管腳為編碼器模式

  • 選擇編碼器模式
  • 分頻值設置為2-1
  • 計數值設置為1
  • 自動重裝載值1
  • 自動重載使能
  • 通道1,2都計數
  • 都是上升沿有效

圖片
在這里插入圖片描述

4.配置時鐘到72MHz

  • 手動輸入72MHz自動匹配

圖片
在這里插入圖片描述

5.配置工程屬性

  • 填寫工程名字
  • 選擇工程路徑
  • 選擇工程平臺(KEIL MDK)圖片

6.配置工程代碼屬性

  • 拷貝必要的庫文件
  • 單獨形成.c跟.h文件

圖片
在這里插入圖片描述

7.生產工程并添加修改代碼

  • 直接打開工程
  • 修改必要代碼

圖片
在這里插入圖片描述

7.1修改定時器代碼

  • 添加一個自定義結構體
/* USER CODE BEGIN Private defines */

typedefstruct
{
	int Encoder_Val;
	int Encoder_Dir;
}EC11_t;

extern EC11_t EC11;
/* USER CODE END Private defines */

編寫一個中斷回調函數

編寫回調函數邏輯代碼

/* USER CODE BEGIN 0 */
EC11_t                   EC11;
/* USER CODE END 0 */

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 uint8_t dir = 0;
	 if(htim == &htim3)
	 {
		 dir =  __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
		 if(dir==1)
		 {
			 EC11.Encoder_Val++;
			 EC11.Encoder_Dir =  1;
		 }
		 if(dir==0)
		 {
			 EC11.Encoder_Val--;
			 EC11.Encoder_Dir = -1;
		 }
	 }
}
/* USER CODE END 1 */

7.2修改外部中斷代碼

添加一個中斷回調函數

/* USER CODE BEGIN 1 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	EC11.Encoder_Val = 0;
}
/* USER CODE END 1 */

7.3修改初始化代碼

/* USER CODE BEGIN TIM3_Init 2 */
	__HAL_TIM_CLEAR_IT(&htim3,TIM_IT_UPDATE);
	HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
	__HAL_TIM_ENABLE_IT(&htim3,TIM_IT_UPDATE);
  /* USER CODE END TIM3_Init 2 */

8.下載調試代碼

  • 現象1順時針旋轉編碼器值加1

圖片
在這里插入圖片描述

  • 現象2順時針旋轉編碼器值減1

圖片
在這里插入圖片描述

  • 按鍵按下編碼器值清零

圖片
在這里插入圖片描述

9.總結

至此編碼器已經全部寫完了。STM32CubeMx的使用比較方便,注意一點就是如果修改代碼盡量寫到英文的注釋中去,這樣即使再重新修改CubeMx配置重新生成代碼也不會改變原來的程序,否則原來的代碼就沒了,別問我咋知道的血淚的教訓?。。?!

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

    關注

    41

    文章

    3364

    瀏覽量

    131571
  • 程序
    +關注

    關注

    114

    文章

    3631

    瀏覽量

    79554
  • 旋轉編碼器
    +關注

    關注

    5

    文章

    143

    瀏覽量

    25739
  • STM32F103C8T6
    +關注

    關注

    104

    文章

    150

    瀏覽量

    80975
  • stm32cubemx
    +關注

    關注

    5

    文章

    260

    瀏覽量

    14448
收藏 人收藏

    評論

    相關推薦

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

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

    STM32學習筆記:編碼器接口模式及應用

    ,可以通過配置編碼器模式對應的函數,就能實現獲取編碼器傳感上面的信息了。使用STM32提供的標
    發表于 05-10 07:00

    stm32cubemx配置定時器

    stm32cubemx配置定時器,文章目錄前言keil主函數時鐘配置中斷響應CUBE主函數配置函數中斷響應前言本文主要介紹使用keil和
    發表于 08-10 07:55

    Stm32CubeMx基本定時器的概念

    Stm32CubeMx基本定時器基本定時器概念Stm32CubeMx 配置基本配置
    發表于 08-18 08:18

    怎樣利用STM32cubeMX庫去配置編碼器模式

    霍爾編碼器測速原理是什么?怎樣利用STM32cubeMX庫去配置編碼器模式?
    發表于 09-10 07:32

    請問怎么實現STM32f103定時器配置編碼器模式使用?

    請問怎么實現STM32f103定時器配置編碼器模式使用?
    發表于 11-18 07:30

    請問STM32CubeMX配置Encoder模式如何驅動EC11旋轉編碼器?

    請問STM32CubeMX配置Encoder模式如何驅動EC11旋轉編碼器?
    發表于 11-18 07:48

    求助STM32CubeMX是如何配置定時器中斷的呢

    STM32CubeMX是如何配置定時器中斷的呢?有哪些基本配置步驟?
    發表于 11-23 06:12

    STM32CubeMX環境配置的相關資料推薦

    STM32CubeMX-----配置編碼器電機的測速前言一、STM32CubeMX環境配置1.配置
    發表于 01-10 08:08

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

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

    STM32CUBEMX配置教程(十二)STM32定時器觸發的固定頻率ADC采樣(使用DMA)

    STM32CUBEMX配置教程(十二)STM32定時器觸發的固定頻率ADC采樣(使用DMA)
    發表于 11-24 13:51 ?83次下載
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>配置</b>教程(十二)<b class='flag-5'>STM32</b>的<b class='flag-5'>定時器</b>觸發的固定頻率ADC采樣(使用DMA)

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

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

    STM32F407定時器編碼器模式簡介

    STM32F407定時器編碼器模式
    發表于 03-31 17:14 ?7857次閱讀
    <b class='flag-5'>STM32</b>F407<b class='flag-5'>定時器</b><b class='flag-5'>編碼器</b><b class='flag-5'>模式</b>簡介

    詳解stm32定時器編碼器模式

    增量式編碼器在實際應用中還是很常見。stm32定時器帶的也有編碼器模式。所用的編碼器是有ABZ
    的頭像 發表于 01-19 09:14 ?7279次閱讀
    詳解<b class='flag-5'>stm32</b><b class='flag-5'>定時器</b>的<b class='flag-5'>編碼器</b><b class='flag-5'>模式</b>

    STM32CubeMx定時器編碼器模式基本使用方法

    增量式編碼器在實際應用中還是很常見。stm32定時器帶的也有編碼器模式。所用的編碼器是有ABZ
    發表于 06-01 14:36 ?3910次閱讀
    <b class='flag-5'>STM32CubeMx</b><b class='flag-5'>定時器</b><b class='flag-5'>編碼器</b><b class='flag-5'>模式</b>基本使用方法
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>