stm32編碼器正交解碼代碼,c文件和h文件加入程序即可使用,寄存器編寫,方便移植
部分源碼預覽:
- #include "Speed_Sensor.h"
- int Drum_Speed=0,Axial_Speed=0;
- void SpeedSensor_Init(void)
- {
- SpeedSensor_Init_TIM2();
- SpeedSensor_Init_TIM3();
- }
- /**************************************************************************
- 函數功能:把TIM2初始化為編碼器接口模式
- 入口參數:無
- 返回 值:無
- **************************************************************************/
- void SpeedSensor_Init_TIM2(void)
- {
- RCC->APB1ENR|=1<<0; //TIM2時鐘使能
- RCC->APB2ENR|=1<<2; //使能PORTA時鐘
- GPIOA->CRL&=0XFFFFFFF0;//PA0
- GPIOA->CRL|=0X00000004;//浮空輸入
- /* 把定時器初始化為編碼器模式 */
- TIM2->PSC = 71;//預分頻器
- TIM2->ARR = SpeedSensor_TIM_PERIOD-1;//設定計數器自動重裝值
- TIM2->CCMR1 |= 1<<0; //輸入模式,IC1FP1映射到TI1上
- TIM2->CCMR1 |= 0xF<<4; //輸入濾波器
- TIM2->CCER |= 0<<1; //IC1不反向
- TIM2->SMCR |= 7<<0; //SMS='011' 所有的輸入均在上升沿和下降沿有效
- TIM2->SMCR |= 5<<4; //
- TIM2->CR1 |= 0x01; //CEN=1,使能定時器
- }
- /**************************************************************************
- 函數功能:把TIM4初始化為編碼器接口模式
- 入口參數:無
- 返回 值:無
- **************************************************************************/
- void SpeedSensor_Init_TIM3(void)
- {
- RCC->APB1ENR|=1<<1; //TIM3時鐘使能
- RCC->APB2ENR|=1<<2; //使能PORTA時鐘
- GPIOA->CRL&=0XF0FFFFFF;//PA6
- GPIOA->CRL|=0X04000000;//浮空輸入
- /* 把定時器初始化為編碼器模式 */
- TIM3->PSC = 71;//預分頻器
- TIM3->ARR = SpeedSensor_TIM_PERIOD-1;//設定計數器自動重裝值
- TIM3->CCMR1 |= 1<<0; //輸入模式,IC1FP1映射到TI1上
- TIM3->CCMR1 |= 0xF<<0; //輸入濾波器
- TIM3->CCER |= 0<<1; //IC1不反向
- TIM3->SMCR |= 7<<0; //SMS='011' 所有的輸入均在上升沿和下降沿有效
- TIM3->SMCR |= 5<<4; //
- TIM3->CR1 |= 0x01; //CEN=1,使能定時器
- }
- /**************************************************************************
- 函數功能:單位時間讀取編碼器計數
- 入口參數:定時器
- 返回 值:速度值
- **************************************************************************/
- void Read_SpeedSensor(void)
- {
- Axial_Speed= (short)TIM2 -> CNT; TIM2 -> CNT=0;
- Drum_Speed= (short)TIM3 -> CNT; TIM3 -> CNT=0;
- }
復制代碼
完整代碼下載:
編碼器單路捕獲.rar
(1.02 KB, 下載次數: 73)
2017-3-13 11:09 上傳
點擊文件名下載附件
|