【无刷直流电机】【KEY_Process 按键扫描】学习记录

该代码实现了一个按键扫描函数,用于检测按键状态并处理电机速度。当检测到长按时,蜂鸣器会响且系统将进行软重置。按键可用于增加或减少目标速度,速度范围限制在-20000到20000。同时,当两个按键同时按下并保持一段时间,会触发特定功能(此处已注释掉)。
摘要由CSDN通过智能技术生成

按键扫描函数

void KEY_Process(void)

int key1_state,key2_state,key1_state_b,key2_state_b,key12_count=0;
void KEY_Process(void)
{
		uint32_t count=0;
		key1_state=HAL_GPIO_ReadPin(DIN1_GPIO_Port,DIN1_Pin);
		key2_state=HAL_GPIO_ReadPin(DIN2_GPIO_Port,DIN2_Pin);
		while(!KEY1_S1_PRESS)
		{
			count++;
			if(count>LONG_KEY_DELAY)
			{
				BEEP_RANG;//蜂鸣器响
			}
		}
		if(count>LONG_KEY_DELAY)
		{
			SoftReset();
		}
		if(key1_state<key1_state_b)
			target_speed+=1000;
		if(key2_state<key2_state_b)
			target_speed-=1000;
		if(target_speed>20000)//目标速度 限制.
			target_speed=20000;
		if(target_speed<-20000)//目标速度 限制.
			target_speed=-20000;
		
		if((key1_state==0)&&(key2_state==0))
		{
			key12_count++;
		}
		if(key12_count>5000)
		{
			key12_count=0;
			//find_commutation_and_set_tamagawazero();
		}
		
		key1_state_b=key1_state;
		key2_state_b=key2_state;

}![在这里插入图片描述](https://img-blog.csdnimg.cn/894327bce47f41bda3e1b4daa8b9441a.png)

1、由下面2句获取了当前按键的状态
在这里插入图片描述
2、判断是否有长按,有则蜂鸣器响、延时500ms和系统重置,while(1)防止重置不成功跳转到其它地方
在这里插入图片描述
3、作用:
(1、key1_state、key1_state_b、key2_state、key2_state_b的初始值都为 1,是用来判断按下的是哪个按键,并增加/递减速度
(2、target_speed是用来规定电机最大速度
在这里插入图片描述
4、下面的代码是两个按键同时按下,并持续到一定时间,就执行find_commutation_and_set_tamagawazero();但是这里被注释掉了。在这里插入图片描述
5、一次按键加速\减速流程结束了,使得key1_state_b、key2_state_b返回初始值 0x01,以便下次使用按键操作。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值