本程序用于对二电机履带底盘进行遥控,接线和具体细节在注释中有说明。
文件已上传到GitHub,链接Willian7004/Programs-for-STM32F103RCT6 (github.com)
代码如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "smg.h"
#include "remote.h"
#include "timer.h"
#include "beep.h"
//共阴数字数组
// 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, 全灭
u8 smg_num[] = {0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6, 0xee, 0x3e, 0x9c, 0x7a, 0x9e, 0x8e, 0x01, 0x00};
u8 key = 0; //按键值
u8 num = 0x00; //数值
u8 num1 = 0x00; //数值
u8 smg_wei = 6; //数码管位选
u8 smg_duan = 0; //数码管段选
u8 smg_flag = 0; //数码管显示标志 0:正常显示 1:消除鬼影
u8 t = 0;
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;
int i=0;
//接线:PA0到3分别接L298N的IN1到IN4,其中IN1和IN3控制电机正转
void track() //电机正反转控制(正转向前,翻转向后)
{ //1:正转 2:翻转 0:停止
if(e==1) //e:左电机 f:右电机
{ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);}
if(e==0)
{ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1