|
最近需要用到TB6600驅(qū)動(dòng)57步進(jìn)電機(jī),在網(wǎng)上找了一些資源后,決定把自己編程中遇到的問題和一些經(jīng)驗(yàn)分享出來,讓新學(xué)的朋友少走彎路;
TB6600和57步進(jìn)電機(jī)具體就不介紹了,話不多說,下面開始
IQF4J`7E(DII_N4PWAS9RCI.jpg.png (378.02 KB, 下載次數(shù): 25)
下載附件
2022-7-10 17:23 上傳
首先是硬件連接: VCC接電源VCC GND接電源與單片機(jī)GND(單片機(jī)與電源和驅(qū)動(dòng)器要共地)
ENA- DIR- PUL-接TB6600驅(qū)動(dòng)器GND
ENA+接單片機(jī)3.3V或5V
DIR+接單片機(jī)PC0
PUL+接單片機(jī)PB0
電機(jī)A+ A- B+ B-與驅(qū)動(dòng)器A+ A- B+ B-相連接
定時(shí)器PWM,電機(jī)初始化代碼如下:
//////////////////////////////////////////////////////////////////////////////////
電機(jī)初始化
void Drive_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//普通輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50M
GPIO_Init(GPIOC, &GPIO_InitStructure);
// GPIO_ResetBits(GPIOC,GPIO_Pin_0);
}
//定時(shí)器初始化
//定時(shí)器3通道3PB0
void TIM3_Int_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //GPIOB時(shí)鐘使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //tim3 時(shí)鐘使能
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//推挽復(fù)用輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50M
GPIO_Init(GPIOB, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值 計(jì)數(shù)到5000為500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 10Khz的計(jì)數(shù)頻率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計(jì)數(shù)模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時(shí)器模式:TIM脈沖寬度調(diào)制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性低
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //根據(jù)T指定的參數(shù)初始化外設(shè)TIM1 4OC1
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM2在CCR1上的預(yù)裝載寄存器
TIM_ARRPreloadConfig(TIM3,ENABLE);//ARPE使能
TIM_Cmd(TIM3, ENABLE); //使能TIMx外設(shè)
}
//主程序如下
int main(void)
{
delay_init(); //延時(shí)函數(shù)初始化
Drive_Init();
TIM3_Int_Init(1000-1,72-1);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到5000為500ms
while(1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare3(TIM3,400);
delay_ms(1000); //注意:正點(diǎn)原子官方延時(shí)函數(shù)delay_ms(),對(duì)72M條件下,nms<=1864 ,所以這里延時(shí)超過1864的話延時(shí)就會(huì)不準(zhǔn)
delay_ms(1000);
delay_ms(1000);
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare3(TIM3,400);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
}
}
Keil代碼下載:
Keil代碼.7z
(184.25 KB, 下載次數(shù): 115)
2022-7-10 20:33 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|