这是我找到的程序,不知道有什么问题。
平台:STM32F407+L298N驱动+42步进电机
编写好程序之后,电机没转,经过查资料我发现没有把核心板和L298N驱动器和12v电源的共地线连接在一起。连接共地之后,电机依旧不转,我就想可能是程序的问题了。
#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "delay.h"
#include "sys.h"
int main(void)
{
int i=200; //脉冲数,电机为0.9/1.8的步距,电机为两相四拍,所以脉冲数为200
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //¸´Óù¦ÄÜ
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ÍÆÍ츴ÓÃÊä³ö
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5); //PA.5 ÀµÍ
GPIO_SetBits(GPIOA,GPIO_Pin_6); //PA.6 ÀµÍ
GPIO_SetBits(GPIOA,GPIO_Pin_7); //PA.7 ÀµÍ
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 ÀµÍ
delay_init(168); //ÑÓʱº¯Êý³õʼ»¯
while(1){
while(i){
GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_SetBits(GPIOA,GPIO_Pin_8);
i--;
}
}
}
|