这次的板卡可用的引脚太少了,io都没有几个,更不要说做IO控制了
一共引出了一组串口,一路PWM(输出/捕获通道),要用的话也很难搞其他外设
本来准备做一个五项开关的,正好看到了这个板子:C011-DK
这上面带有一个grove(uart)和一个JOYSTICK摇杆,正是我想要的外设
这个摇杆和之前用5个GPIO测方向不太一样,只用到了一个IO口,用一路ADC来检测
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 50);
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
{
ADC_Value = HAL_ADC_GetValue(&hadc1);
}
HAL_Delay(1000);
另外,主代码中要使用摇杆控制转速挡位的同时,用串口发送挡位,对应代码如下:
__bool Forth_back_ward ;
uint_8 Gear=0;
uint_8 motor_rate_value=0;
void motor()
{
if ((ADC_Value >= 0)&&(ADC_Value <= 1000))
{
For_back_ward=1;// 电机正转
}
else if ((ADC_Value >= 1000) &&(ADC_Value <= 2000))
{
Gear-=1;
}
else if ((ADC_Value >= 2000)&& (ADC_Value <= 3000))
{
Gear+=1;
}
else if ((ADC_Value >= 3000)&&( ADC_Value <= 4000))
{
For_back_ward=0;//电机反转
}
/*
switch(Gear)
{
case 0:
motor_rate_stop();
motor_rate_value=0;
break;
case 1:
motor_rate1();
motor_rate_value=100;
break;
case 2:
motor_rate2();
motor_rate_value=1000;
break;
}
uart_trans(motor_rate_value);
*/
}
void uart_trans(uint8_t motor_rate_value)
{
if(HAL_UART_Receive(&huart1,(uint8_t*)motor_rate_value,5,100)==HAL_OK)
{
HAL_UART_Transmit(&huart1,(uint8_t*)motor_rate_value,5,100);
}
}
这样就可以用串口发送信息以调整挡位了