主控STM32f103C8T6通过两个引脚控制一个电机的正反转,使用两种逻辑控制电机正反转,一个是当收到串口传来的“OPEN“时,控制电机正转1s左右,然后停住,等30s后再控制反转

当前有个小需求。主控STM32f103C8T6通过两个引脚控制一个电机的正反转,使用两种逻辑控制电机正反转,

一个是当收到串口传来的"OPEN"时,控制电机正转1s左右,然后停住,等30s后再控制反转1s。另一个是有个按钮,按下以后也是控制电机正转1s左右,然后停住,等30s后再控制反转1s。

需求分析

正反转就是控制引脚高低电平

一高一低或者一低一高

然后可以通过定时器进行计时,控制转多少秒

其实简单的话可以直接线程阻塞,就是说先正转1s,
然后delay 1000ms,然后循环等待。

他这个的使用场景,就是类似于小区门禁,

电机正转就是把门打开

等30s以后把门关上
                                      ——浩哥

发送Open需要配置串口

按键的话就是检测引脚高低电平,然后判断处理

首先,需要配置串口通信和按钮输入的引脚。 假设将串口连接到USART1,并将按钮连接到GPIOA的第0号引脚。

  1. 引入头文件和定义引脚宏:
#include "stm32f10x.h"
#define MOTOR_PIN_1 GPIO_Pin_0
#define MOTOR_PIN_2 GPIO_Pin_1
#define BUTTON_PIN GPIO_Pin_2
这里包含了针对STM32F103C8T6的头文件,并定义了电机引脚1(MOTOR_PIN_1)、电机引脚2(MOTOR_PIN_2)和按钮引脚(BUTTON_PIN)的宏。

2.全局变量:

volatile uint8_t command_received = 0;

这个全局变量用于指示是否接收到了控制命令。 在主循环中,当为1时执行电机正反转操作。command_receivedcommand_received

3.GPIO配置

void GPIO_Configuration(void) {
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = MOTOR_PIN_1 | MOTOR_PIN_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = BUTTON_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

该函数用于配置GPIO引脚。 在这个例子中,我们将GPIOA的引脚0和引脚1配置为输出(用于控制电机正反转),将GPIOB的引脚2配置为输入(用于接收按钮的状态)。

4.串口配置:

void USART_Configuration(void)
 {
    // 根据需要配置串口接收功能
    // ...
}

这个函数用于配置串口接收功能。 由于具体的串口配置会根据实际需求而变化,所以你需要根据自己的情况进行配置。

5.定时器配置:

void TIM_Configuration(void)
 {
    // 根据需要配置定时器
    // ...
}

这个函数用于配置定时器。 与串口配置类似

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值