資源簡介
stm32步進電機驅動,包括庫函數和寄存器兩種版本,可控制步數和速度,正反轉等

代碼片段和文件信息
#include?“driver.h“
#include?“delay.h“
#include?“usart.h“
////////////////////////////////////////////////////////////////////////////////// ?
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//此例程有參考論壇網友例程的一部分(http://www.openedv.com/thread-41832-1-1.html)
//ALIENTEK?Mini?STM32開發板
//步進電機驅動器?測試代碼 ???
//lycreturn@ALIENTEK
//技術論壇:www.openedv.com
//修改日期:2016/05/12
//版本:V1.0
//版權所有,盜版必究。
//Copyright(C)?廣州市星翼電子科技有限公司?2009-2019
//All?rights?reserved
//********************************************************************************
//修改日期:2016/05/12
//////////////////////////////////////////////////////////////////////////////////
/**********?驅動器?端口定義?**************
//DRIVER_DIR???PC0?
//DRIVER_OE????PC2?
//STEP_PULSE???PC7?(TIM8_CH2LCD_RW)
******************************************/
u8?rcr_remainder;???//重復計數余數部分
u8?is_rcr_finish=1;?//重復計數器是否設置完成
long?rcr_integer; //重復計數整數部分
long?target_pos=0;??//有符號方向
long?current_pos=0;?//有符號方向
DIR_Type?motor_dir=CW;//順時針
/**************?驅動器控制信號線初始化?****************/
void?Driver_Init(void)
{
RCC->APB2ENR|=1<<4;?//GPIOC時鐘使能
GPIOC->CRL&=0XFFFFF0F0; //PC02推挽輸出
GPIOC->CRL|=0X00000303; //PC02推挽輸出
DRIVER_DIR=1;???//PC0輸出高?順時針方向
DRIVER_OE=0;? //PC2輸出低?使能輸出
}
/***********************************************
//TIM8_CH2(PC7)?單脈沖輸出+重復計數功能初始化
//TIM8?時鐘頻率?72MHz
//arr:自動重裝值
//psc:時鐘預分頻數
************************************************/
void?TIM8_OPM_RCR_Init(u16?arru16?psc)
{ ? ?
//此部分需手動修改IO口設置
RCC->APB2ENR|=1<<13;? //TIM8時鐘使能?
RCC->APB2ENR|=1<<4;? //GPIOC時鐘使能
GPIOC->CRL&=0X0FFFFFFF; //PC7清除之前的設置
GPIOC->CRL|=0XB0000000; //復用功能輸出??
TIM8->ARR=arr; //設定計數器自動重裝值?
TIM8->PSC=psc; //預分頻器設置
TIM8->CCR2=TIM8->ARR>>1;//比較值
TIM8->CR1|=1<<2;??? //設置只有計數溢出作為更新中斷
TIM8->CR1|=1<<3;??? //單脈沖模式
TIM8->CCMR1|=7<<12;?? //CH2?PWM2模式
TIM8->CCMR1|=1<<11;? //CH2預裝載使能
TIM8->CCER|=1<<4;??? //OC2?輸出使能 ??
TIM8->CR1|=0x0080;??? //ARPE使能?
TIM8->DIER|=1<<0;??? //允許更新中斷
MY_NVIC_Init(11TIM8_UP_IRQn2);//搶占1,子優先級1,組2
TIM8->SR=0;//清除所有標志位
TIM8->CR1|=0x01;?//使能定時器8? ??
}
/*******?TIM8更新中斷服務程序?*********/
void?TIM8_UP_IRQHandler(void)
{
if(TIM8->SR&(1<<0))//更新中斷
{
TIM8->SR&=~(1<<0);//清除更新中斷標志位
if(is_rcr_finish==0)//重復計數器未設置完成
{
if(rcr_integer!=0)?//整數部分脈沖還未發送完成
{
TIM8->RCR=RCR_VAL;//設置重復計數值
rcr_integer--;//減少RCR_VAL+1個脈沖
}else?if(rcr_remainder!=0)//余數部分脈沖?不位0
{
TIM8->RCR=rcr_remainder-1;//設置余數部分
rcr_remainder=0;//清零
is_rcr_finish=1;//重復計數器設置完成
}else?goto?out;???//rcr_remainder=0,直接退出
TIM8->EGR|=0x01;??//產生一個更新事件?重新初始化計數器
TIM8->BDTR|=1<<15;//MOE?主輸出使能
TIM8->CR1|=0x01;??//使能定時器8
if(motor_dir==CW)?//如果方向為順時針???
current_pos+=(TIM8->RCR+1);//加上重復計數值
else??????????//否則方向為逆時針
current_pos-=(TIM8->RCR+1);//減去重復計數值
}else
{
out: is_rcr_finish=1;//重復計數器設置完成
TIM8->BDTR&=~(1<<15);//MOE?關閉主輸出
TIM8->CR1&=~(1<<0);??//關閉定時器8
printf(“當前位置=%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\DRIVER\
?????文件????????5954??2016-08-15?19:00??寄存器版,需要步進電機驅動器\HARDWARE\DRIVER\driver.c
?????文件????????1597??2016-08-15?14:30??寄存器版,需要步進電機驅動器\HARDWARE\DRIVER\driver.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\EXTI\
?????文件????????1617??2014-03-06?18:19??寄存器版,需要步進電機驅動器\HARDWARE\EXTI\exti.c
?????文件?????????667??2014-03-06?17:46??寄存器版,需要步進電機驅動器\HARDWARE\EXTI\exti.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\KEY\
?????文件????????1671??2014-03-06?15:23??寄存器版,需要步進電機驅動器\HARDWARE\KEY\key.c
?????文件?????????829??2014-03-06?11:17??寄存器版,需要步進電機驅動器\HARDWARE\KEY\key.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\LCD\
?????文件???????35016??2014-01-02?17:22??寄存器版,需要步進電機驅動器\HARDWARE\LCD\FONT.H
?????文件???????84887??2014-03-18?19:04??寄存器版,需要步進電機驅動器\HARDWARE\LCD\ILI93xx.c
?????文件???????10091??2014-03-07?19:23??寄存器版,需要步進電機驅動器\HARDWARE\LCD\LCD.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\LED\
?????文件?????????951??2016-05-27?14:49??寄存器版,需要步進電機驅動器\HARDWARE\LED\led.c
?????文件?????????695??2014-03-05?20:27??寄存器版,需要步進電機驅動器\HARDWARE\LED\led.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\OLED\
?????文件????????7275??2014-03-07?18:46??寄存器版,需要步進電機驅動器\HARDWARE\OLED\oled.c
?????文件????????1908??2014-03-07?18:18??寄存器版,需要步進電機驅動器\HARDWARE\OLED\oled.h
?????文件???????35017??2014-01-02?11:23??寄存器版,需要步進電機驅動器\HARDWARE\OLED\oledfont.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\TIMER\
?????文件????????4184??2014-03-07?17:21??寄存器版,需要步進電機驅動器\HARDWARE\TIMER\timer.c
?????文件????????1014??2014-03-07?17:21??寄存器版,需要步進電機驅動器\HARDWARE\TIMER\timer.h
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\HARDWARE\WDG\
?????文件????????2203??2014-03-06?19:06??寄存器版,需要步進電機驅動器\HARDWARE\WDG\wdg.c
?????文件?????????855??2014-03-06?19:05??寄存器版,需要步進電機驅動器\HARDWARE\WDG\wdg.h
?????文件?????????399??2011-05-09?18:17??寄存器版,需要步進電機驅動器\keilkill.bat
?????目錄???????????0??2018-07-17?15:48??寄存器版,需要步進電機驅動器\OBJ\
?????文件???????30942??2016-08-15?19:00??寄存器版,需要步進電機驅動器\OBJ\test.hex
............此處省略206個文件信息
- 上一篇:電動汽車充放電優化管理論文及代碼數據.zip
- 下一篇:環境支持軟件.rar
評論
共有 條評論