写一个基于Stm32f103c8t6单片机调用步进电机并且在0.96寸的oled屏上显示正反转的代码
时间: 2023-03-13 07:27:10 浏览: 83
根据您的要求,下面是基于STM32F103C8T6单片机调用步进电机并在0.96寸OLED屏上显示正反转的代码:#include <stdio.h>
#include <stm32f103x.h>//定义正反转标志
#define FORWARD 0
#define REVERSE 1//定义端口宏
#define STEP_PORT GPIOB
#define DIR_PORT GPIOA
#define STEP_PIN GPIO_PIN_0
#define DIR_PIN GPIO_PIN_0//定义OLED端口宏
#define OLED_PORT GPIOB
#define OLED_PIN GPIO_PIN_7//定义步进电机旋转一格所需的步数
#define STEP_NUM 20//定义步进电机正反转函数
void StepMotor_Control(uint8_t dir)
{
uint8_t i;
if(FORWARD == dir)
{
GPIO_Write(DIR_PORT, DIR_PIN, 1);
}
else
{
GPIO_Write(DIR_PORT, DIR_PIN, 0);
}
for(i=0; i<STEP_NUM; i++)
{
GPIO_Write(STEP_PORT, STEP_PIN, 1);
GPIO_Write(OLED_PORT, OLED_PIN, 0);
delay_us(100);
GPIO_Write(STEP_PORT, STEP_PIN, 0);
GPIO_Write(OLED_PORT, OLED_PIN, 1);
delay_us(100);
}
}int main(void)
{
//初始化
GPIO_Init(STEP_PORT, STEP_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(DIR_PORT, DIR_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(OLED_PORT, OLED_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);
while(1)
{
//正转
StepMotor_Control(FORWARD);
delay_ms(500);
//反转
StepMotor_Control(REVERSE);
delay_ms(500);
}
}