STM32CubeMx配置定時器的編碼器模式
上次文章寫了編碼器是如何工作的,今天就來用STM32F103C8T6的TIM3的通道1跟通道2編寫一個編碼器識別程序。
編程思路:
A相:TIM3_CH1
B相:TIM3_CH2
SWITCH:PB5(外部中斷的方式)
實現(xiàn)效果:
編碼器順時針旋轉(zhuǎn)編碼器計數(shù)值 +1
編碼器逆時針旋轉(zhuǎn)編碼器計數(shù)值 -1
按下SWITCH編碼器計數(shù)值值清 0
話不多說,上教程!
1.配置時鐘
- 選擇外部高速時鐘源HSE
在這里插入圖片描述
2.配置SWITCH管腳為外部中斷模式(默認上拉)
- 選擇中斷模式觸發(fā)下降沿有效
- 默認是上拉輸入
- 添加用戶標簽為SWITCH
在這里插入圖片描述
使能NVIC配置
在這里插入圖片描述
3.配置定時器管腳為編碼器模式
- 選擇編碼器模式
- 分頻值設(shè)置為2-1
- 計數(shù)值設(shè)置為1
- 自動重裝載值1
- 自動重載使能
- 通道1,2都計數(shù)
- 都是上升沿有效
在這里插入圖片描述
4.配置時鐘到72MHz
- 手動輸入72MHz自動匹配
在這里插入圖片描述
5.配置工程屬性
- 填寫工程名字
- 選擇工程路徑
- 選擇工程平臺(KEIL MDK)
6.配置工程代碼屬性
- 拷貝必要的庫文件
- 單獨形成.c跟.h文件
在這里插入圖片描述
7.生產(chǎn)工程并添加修改代碼
- 直接打開工程
- 修改必要代碼
在這里插入圖片描述
7.1修改定時器代碼
- 添加一個自定義結(jié)構(gòu)體
/* USER CODE BEGIN Private defines */
typedefstruct
{
int Encoder_Val;
int Encoder_Dir;
}EC11_t;
extern EC11_t EC11;
/* USER CODE END Private defines */
編寫一個中斷回調(diào)函數(shù)
編寫回調(diào)函數(shù)邏輯代碼
/* 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修改外部中斷代碼
添加一個中斷回調(diào)函數(shù)
/* 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.下載調(diào)試代碼
- 現(xiàn)象1順時針旋轉(zhuǎn)編碼器值加1
在這里插入圖片描述
- 現(xiàn)象2順時針旋轉(zhuǎn)編碼器值減1
在這里插入圖片描述
- 按鍵按下編碼器值清零
在這里插入圖片描述
9.總結(jié)
至此編碼器已經(jīng)全部寫完了。STM32CubeMx的使用比較方便,注意一點就是如果修改代碼盡量寫到英文的注釋中去,這樣即使再重新修改CubeMx配置重新生成代碼也不會改變原來的程序,否則原來的代碼就沒了,別問我咋知道的血淚的教訓(xùn)啊!!!
-
編碼器
+關(guān)注
關(guān)注
45文章
3592瀏覽量
134145 -
程序
+關(guān)注
關(guān)注
116文章
3775瀏覽量
80845 -
旋轉(zhuǎn)編碼器
+關(guān)注
關(guān)注
5文章
158瀏覽量
25947 -
STM32F103C8T6
+關(guān)注
關(guān)注
107文章
160瀏覽量
83223 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
280瀏覽量
14751
發(fā)布評論請先 登錄
相關(guān)推薦
評論