資源簡(jiǎn)介
stm32F407光電編碼器代碼,親測(cè)能用,可測(cè)量電機(jī)角度和轉(zhuǎn)速

代碼片段和文件信息
#include?“decoder.h“
#include?
#include?
#include?
//
//開發(fā)者只需要調(diào)用Decoder_Init()進(jìn)行初始化
//然后調(diào)用Decoder_GetCnt或者Decoder_GetSpeed獲得數(shù)據(jù)即可
uint16_t?con_speed_period=20;//20ms采集一次數(shù)據(jù)根據(jù)實(shí)際修改
float?Decoder_GetSpeed(void)
{
static?int16_t?tmp;
static?float?re_dat=0;
tmp=(int16_t)Decoder_GetCnt();
if(tmp>20000)tmp=20000; //限幅
else?if(tmp<-20000)tmp=-20000;
//編碼器是1轉(zhuǎn)輸出256個(gè)正交脈沖,采用邊緣計(jì)數(shù),總共有256*4=1024
//進(jìn)行單位換算?
re_dat=(float)(((int16_t)tmp)*1000/(1024.0*con_speed_period));
return?re_dat;
}
void?Decoder_Init(void)
{
Decoder_GPIO_Init();
Decoder_TIM_Init();
}
void?Decoder_GPIO_Init(void)
{
GPIO_InitTypeDef?GPIO_InitStructure;
?? RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE??ENABLE);
? GPIO_InitStructure.GPIO_Pin?=??GPIO_Pin_11|GPIO_Pin_9;
?? GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType?=?GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd?=?GPIO_PuPd_NOPULL;
?? GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_100MHz;
?? GPIO_Init(GPIOE?&GPIO_InitStructure);
GPIO_PinAFConfig(GPIOE?GPIO_PinSource11?GPIO_AF_TIM1);
GPIO_PinAFConfig(GPIOE?GPIO_PinSource9?GPIO_AF_TIM1);
}
void?Decoder_TIM_Init(void)
{
TIM_TimebaseInitTypeDef??TIM_TimebaseStructure;
TIM_ICInitTypeDef?TIM_ICInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1??ENABLE);
TIM_DeInit(TIM1);
TIM_TimebaseStructInit(&TIM_TimebaseStructure);
TIM_TimebaseStructure.TIM_Period?=?ENCODER_TIM_PERIOD-1;
TIM_TimebaseStructure.TIM_Prescaler?=?0x00;
TIM_TimebaseStructure.TIM_ClockDivision?=?TIM_CKD_DIV1;
TIM_TimebaseStructure.TIM_CounterMode?=?TIM_CounterMode_Up;
TIM_TimebaseInit(TIM1?&TIM_TimebaseStructure);?
TIM_EncoderInterfaceConfig(TIM1?TIM_EncoderMode_TI12?TIM_ICPolarity_Falling?TIM_ICPolarity_Falling);
TIM_ICStructInit(&TIM_ICInitStructure);
TIM_SetCounter(TIM1?0);
TIM_Cmd(TIM1?ENABLE);
}?
//返回計(jì)數(shù)值
int?Decoder_GetCnt()
{
static?int?Decoder_cnt=0;
Decoder_cnt=(short)(TIM1?->?CNT);
TIM1?->?CNT=0;
return?Decoder_cnt;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????2177??2017-05-14?22:48??Encoder\decoder.c
?????文件?????????285??2017-05-14?22:36??Encoder\decoder.h
?????目錄???????????0??2019-07-03?17:05??Encoder\
評(píng)論
共有 條評(píng)論