根据红外地址调
假设
#define ADD 0X90
#define MIN 0XA8
#define STOP 0XE0
参考示例程序,使用结构体,将红外地址与电机转速互相映射
typedef struct
{
int l;
u8 c;
}_sys_ctrl;
extern _sys_ctrl sys_ctrl;
初始化
ST_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //????????2?
USART1_Init(115200);
LED_Init();
SMG_Init();
Hwjs_Init();
sys_ctrl.l=0;
TIM3_CH2_PWM_Init(500,72-1);
TIM_SetCompare2(TIM3,0);
获得红外编码
if(hw_jsbz==1)
{
hw_jsbz=0;
printf("ºìÍâ½ÓÊÕÂë %0.8X\r\n",hw_jsm); //´òÓ¡
sys_ctrl.c=hw_jsm>>8;
hw_jsm=0;
}
数码管显示L-sys_ctrl.l,L是00111000,0x38,-是01000000,0x40
buf[0]=0x38;
buf[1]=0x40;
buf[2]=gsmg_code[sys_ctrl.l];
SMG_Display(buf,6);
切换等级
switch(sys_ctrl.c)
{case ADD: sys_ctrl.l++;
if(sys_ctrl.l>4)sys_ctrl.l=0;break;
case MIN:sys_ctrl.l--;
if(sys_ctrl.l<0)sys_ctrl.l=4;
break;
case STOP: sys_ctrl.l=0; break;
}
清除红外编码,使之准备下次操作
sys_ctrl.c=0;
传给电机
TIM_SetCompare2(TIM3,sys_ctrl.l*124);
结果:失败,数码管正常,程序运行正常,但电机不转。/(ㄒoㄒ)/~~库😭😭😭😭😭😭😭😭😭