資源簡介
stm32f10x系列讀取正交編碼器的教程,使用了timer3,一定是正交ab相輸出的編碼器。

代碼片段和文件信息
#include?“sys.h“
#include?“motor.h“
/***********************************************************
Copyright?(C)?2013-2023YFRobot
Author:?aosini???Version:1.0?????Date:2014/03/04
baseOn:YFRobot?CoreSTM32?V1.0
Description:?YFRobot?L298N?V1.1?驅動代碼
?????????????電機驅動VIN、GND接7.2V
?????????????IN1~2接PC0~1;方向控制端口
?ENA接PA6:速度控制
?電機兩根黃線接在298?M1處? ?
All?rights?reserved
***********************************************************/
//LED?IO?初始化?端口PD.2??運行指示燈
void?LED_Init(void)
{ ??? ?
RCC->APB2ENR|=1<<5;??????//使能PORTD時鐘 ?
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;??//PD.2推挽輸出
GPIOD->ODR|=1<<2;????????//PD.2輸出高?
}
//電機旋轉方向控制信號端口初始化
//PC1~0推挽輸出,輸出高
void?M_Init(void)
{
RCC->APB2ENR|=1<<4;??????//使能PORTC時鐘
GPIOC->CRL&=0XFFFFFF00;
GPIOC->CRL|=0X00000033;??//PC1~0推挽輸出
GPIOC->ODR|=0XF<<0; ?????//PC1~0輸出高電平
}
//定時器TIM3,PWM輸出初始化CH1(PA6)
//arr:自動重裝值
//psc:時鐘預分頻數
//設置自動重裝值為900,那么PWM頻率=72000/900=8Khz
////見STM32參考手冊,14.3.9PWM模式。
void?TIM3_PWM_Init(u16?arru16?psc)?//arr設定計數器自動重裝值???
????????????????????????????????????//psc預分頻器不分頻psc=0
{
RCC->APB1ENR|=1<<1;???????//TIM3時鐘使能????
??
GPIOA->CRL&=0XF0FFFFFF;//PA6輸出
GPIOA->CRL|=0X0B000000;//復用功能輸出? ??
GPIOA->ODR|=1<<6;//PA6上拉
TIM3->ARR=arr;//設定計數器自動重裝值?
TIM3->PSC=psc;//預分頻器不分頻
TIM3->CCMR1|=6<<4;??//CH1?PWM1模式 高電平有效 ?
TIM3->CCMR1|=1<<3;?//CH1預裝載使能
TIM3->CCER|=1<<0;???//OC1?輸出使能???
TIM3->CR1=0x0080;???//ARPE使能?
TIM3->CR1|=0x01;????//使能定時器3?
}
//電機方向與速度控制,速度調節范圍為-100~+100
//大于0時,正轉,小于0時,反轉
//?占空比低于0.4時電機不轉
//(占空比是指高電平在一個周期之內所占的時間比率)
//TIM3->CCR1的設定范圍為0~900(因為arr=900)
//見STM32參考手冊,14.3.9PWM模式。
void?Motor_Speed_Control(s16?motorSpeed) ?
{
????s16?speed?=?0?;
????if(motorSpeed>100)??speed?=?900;
????else?if?(motorSpeed<-100)??speed?=?-900;
else??speed?=?motorSpeed;
if(speed?==?0)
{
M_1?=?0;
M_2?=?0;
}
???? else?if(speed?>?0)
{
M_1?=?0;
M_2?=?1;
TIM3->CCR1?=?speed?*?5?+?400;
}
else
{
M_1?=?1;
M_2?=?0;
TIM3->CCR1?=?-speed?*?5?+400;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????399??2011-04-23?10:24??stm32編碼器接口\keilkilll.bat
?????文件???????2378??2014-03-05?09:59??stm32編碼器接口\motor\motor.c
?????文件????????958??2014-03-05?09:59??stm32編碼器接口\motor\motor.h
?????文件???????1632??2014-03-05?09:59??stm32編碼器接口\motor\speed_cap.c
?????文件????????616??2014-03-05?09:59??stm32編碼器接口\motor\speed_cap.h
?????文件????????312??2014-03-05?10:04??stm32編碼器接口\readme.txt
?????文件???????2038??2011-01-12?20:34??stm32編碼器接口\SYSTEM\delay\delay.c
?????文件????????876??2011-01-12?20:34??stm32編碼器接口\SYSTEM\delay\delay.h
?????文件???????6885??2011-01-12?20:34??stm32編碼器接口\SYSTEM\sys\sys.c
?????文件???????3839??2011-01-12?20:34??stm32編碼器接口\SYSTEM\sys\sys.h
?????文件???????3342??2011-04-17?15:42??stm32編碼器接口\SYSTEM\usart\usart.c
?????文件???????1054??2011-04-17?15:45??stm32編碼器接口\SYSTEM\usart\usart.h
?????文件?????148364??2014-03-05?09:59??stm32編碼器接口\USER\delay.crf
?????文件???????1825??2014-03-05?09:59??stm32編碼器接口\USER\delay.d
?????文件?????172140??2014-03-05?09:59??stm32編碼器接口\USER\delay.o
?????文件???????1098??2014-03-05?09:59??stm32編碼器接口\USER\main.c
?????文件?????154992??2014-03-05?09:59??stm32編碼器接口\USER\main.crf
?????文件???????1941??2014-03-05?09:59??stm32編碼器接口\USER\main.d
?????文件?????178620??2014-03-05?09:59??stm32編碼器接口\USER\main.o
?????文件???????1977??2014-03-05?09:59??stm32編碼器接口\USER\main.Opt
?????文件???????2858??2014-03-04?20:43??stm32編碼器接口\USER\main.Uv2
????.......??????1981??2014-03-05?09:50??stm32編碼器接口\USER\main_Opt.Bak
?????文件??????14042??2014-03-05?10:08??stm32編碼器接口\USER\main_Target?1.dep
?????文件?????150982??2014-03-05?09:59??stm32編碼器接口\USER\motor.crf
?????文件???????1841??2014-03-05?09:59??stm32編碼器接口\USER\motor.d
?????文件?????174240??2014-03-05?09:59??stm32編碼器接口\USER\motor.o
?????文件?????150596??2014-03-05?09:59??stm32編碼器接口\USER\speed_cap.crf
?????文件???????2011??2014-03-05?09:59??stm32編碼器接口\USER\speed_cap.d
?????文件?????174856??2014-03-05?09:59??stm32編碼器接口\USER\speed_cap.o
?????文件??????35240??2014-03-05?09:59??stm32編碼器接口\USER\STM32F10x.lst
............此處省略27個文件信息
評論
共有 條評論