📄 control_match.c
字号:
#include "Control_Match.h"
#define YG_MAX_VALUE 35
#define YG_MIN_VALUE -35
#define YG_MID_VALUE 128
void ControlKeyInit(void)
{
//RCC->APB2ENR|= BIT(2);
GPIOA->CRL &= 0x00FFFFFF; //PA 6 7 8 11 12
GPIOA->CRL |= 0x88000000;
GPIOA->CRH &= 0xFFF00FF0;
GPIOA->CRH |= 0x00088008;
GPIOA->ODR |= 0x19C0;
}
void ContorlMatch(u8*pnrf2401, u8* pbuf)
{
u8 i = 0;
u8 temp_dir = 0;
s16 temp = 0;
for(i = 3; i < 6; i ++)
{
pbuf[i] = 0;
}
//////////////////////////////////////////////
//方向键->左边4个
temp_dir = pnrf2401[DIR_BIT] & 0x0f; //屏蔽右方向键的高4位
if(pnrf2401[DIR_BIT] == L_UP)
{
pbuf[DATA_3] |= BIT(1); //1前进
}
else if(pnrf2401[DIR_BIT] ==L_DN)
{
pbuf[DATA_3] |= BIT(0); //3后退
}
else if(pnrf2401[DIR_BIT] == L_LEFT)
{
pbuf[DATA_3] |= BIT(2); //4右大转
}
else if(pnrf2401[DIR_BIT] == L_RIGHT)
{
pbuf[DATA_3] |= BIT(4); //2左大转
}
else if(pnrf2401[DIR_BIT] == L_LEFT_UP)
{
pbuf[DATA_3] |= BIT(3); //1+4右小转
}
else if(pnrf2401[DIR_BIT] == L_RIGHT_UP)
{
pbuf[DATA_3] |= BIT(5); //1+2左小转
}
//////////////////////////////////////////////
//方向键->右边4个
temp_dir = pnrf2401[DIR_BIT] & 0xf0; //屏蔽左方向键的低4位
if(pnrf2401[DIR_BIT] == R_UP)
{
pbuf[DATA_2] |= BIT(3); //5大臂伸展
}
else if(pnrf2401[DIR_BIT] == R_DN)
{
pbuf[DATA_2] |= BIT(2); //7大臂收缩
}
if(pnrf2401[DIR_BIT] == R_LEFT)
{
pbuf[DATA_1] |= BIT(1); //6中臂伸展
}
else if(pnrf2401[DIR_BIT] == R_RIGHT)
{
pbuf[DATA_1] |= BIT(0); //8中臂收缩
}
//////////////////////////////////////////////
//左右摇杆
temp = pnrf2401[L_YG_X_BIT] - YG_MID_VALUE;
if(temp > YG_MAX_VALUE)
{
pbuf[DATA_2] |= BIT(0); //9机械臂右旋转
}
else if(temp < YG_MIN_VALUE)
{
pbuf[DATA_2] |= BIT(1); //9机械臂左旋转
}
temp = pnrf2401[R_YG_X_BIT] - YG_MID_VALUE;
if(temp > YG_MAX_VALUE)
{
pbuf[DATA_1] |= BIT(5); //10机械手左旋转
}
else if(temp < YG_MIN_VALUE)
{
pbuf[DATA_1] |= BIT(4); //10机械手右旋转
}
//////////////////////////////////////////////
//正前方4键
//左两键
if(pnrf2401[LR_FNT_BIT] & L_FNT_UP)
{
pbuf[DATA_1] |= BIT(2); //12小臂收缩
}
else if(pnrf2401[LR_FNT_BIT] & L_FNT_DN)
{
pbuf[DATA_1] |= BIT(3); //11小臂伸展
}
//右两键
if(pnrf2401[LR_FNT_BIT]& R_FNT_UP)
{
pbuf[DATA_1] |= BIT(7); //13机械手闭合
}
else if(pnrf2401[LR_FNT_BIT] & R_FNT_DN)
{
pbuf[DATA_1] |= BIT(6); //14机械手张开
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -