2019年7月22日
今天是做小车过程中的第二天,今天写一下单纯的实现电机的正反转。(但是还是不会实现PWM调速)代码如下:
/***********************************************/
.H 代码
#ifndef __MOTOR1_H
#define __MOTOR1_H
#include “stm32f10x.h”
//#include “stm32f10x_gpio.h”
#define High 1 //宏定义 高为1
#define Low 0 //宏定义 低为0
#define IN1(a) if (a)
GPIO_SetBits(GPIOA,GPIO_Pin_4); //如果真 IN1 为高电平(PA4)
else
GPIO_ResetBits(GPIOA,GPIO_Pin_4) // 否则为低电平 (PA4)
#define IN2(a) if (a)
GPIO_SetBits(GPIOA,GPIO_Pin_5);
else
GPIO_ResetBits(GPIOA,GPIO_Pin_5)
otor_1_Config(void);
void Motor_1_STOP(void); //停止
void Motor_1_PRun(void); //正转
void Motor_1_NRun(void); //反转
#endif
下面是.c代码
#include “motor.h”
#include “stm32f10x.h”
#include “delay.h”
void Motor_1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//用GPIOA时钟
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5);
}
void Motor_1_STOP(void)
{
IN1(High);
IN2(High);
}
void Motor_1_PRun(void)
{
IN1(Low);
IN2(High);
}
void Motor_1_NRun(void)
{
IN1(High);
IN2(Low);
}
下面是主函数
int main(void)
{
Motor_1_Config();
delay_init();
while(1)
{
Motor_1_PRun(); //正转
delay_ms(2000); //延迟2秒
Motor_1_NRun(); //反转
delay_ms(2000); //延迟2秒
Motor_1_STOP(); //停止
delay_ms(2000);
}
}
上一篇:STM32用PWM实现步进电机的正反转
下一篇:STM32F103 使用TIM3产生四路PWM
推荐阅读最新更新时间:2024-11-13 12:17
设计资源 培训 开发板 精华推荐
- AD5312 双路 10 位缓冲数模转换器的典型应用
- 使用 ROHM Semiconductor 的 BA80BC0WFP-E2 的参考设计
- 具有 PWM 调光功能的 NSV50350ADT4G LED 灯串的典型应用
- STM32F411CEU6最小开发板
- ST_Link_V2.1
- 鸿蒙智能开关
- DER-998 - 使用 LinkSwitch-XT2SR 的 12 W 或 6 W 可选输出电压电器电源
- 使用 ROHM Semiconductor 的 BU4840 的参考设计
- DM320016,具有基于 MTCH6301 的手势的投射电容式触摸板开发套件
- LTC3634MPFE 降压型稳压器的设计示例电路