【STM32标准库】无线调参 自定义协议

调目标值

[A=600.00]

调PID参数

[P=900.00 I=009.00 D=000.00] 

串口中断服务函数

extern float Buffer_P,Buffer_I,Buffer_D,Buffer_aim; 
void USART1_IRQHandler(void)
{
	
	static uint8_t id_arr_temp[28];
	static uint8_t id_arr[28];
	static uint8_t i=0;
	static uint8_t ReBuff;
	if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
	{		
		ReBuff = USART_ReceiveData(USART1);
		if(ReBuff=='[')  i=0;
		id_arr_temp[i]=ReBuff;
		i++;
		if(i==10&&id_arr_temp[1]=='A'&&id_arr_temp[9]==']')
		{	
			for(i=0;i<9;i++)
				id_arr[i]=id_arr_temp[i]-'0';
			if(i==9)
			{
				Buffer_aim=id_arr[3]*100+id_arr[4]*10+id_arr[5]+id_arr[7]*0.1+id_arr[8]*0.01;
				Angle.aim=Buffer_aim;
				//printf("%.2f\n",Buffer_aim);
			}
		}
		else if(i==28&&id_arr_temp[1]=='P'&&id_arr_temp[27]==']')
		{	
			for(i=0;i<28;i++)
				id_arr[i]=id_arr_temp[i]-'0';
			if(i==28)
			{
				Buffer_P=id_arr[3]*100+id_arr[4]*10+id_arr[5]+id_arr[7]*0.1+id_arr[8]*0.01;
				Buffer_I=id_arr[12]*100+id_arr[13]*10+id_arr[14]+id_arr[16]*0.1+id_arr[17]*0.01;
				Buffer_D=id_arr[21]*100+id_arr[22]*10+id_arr[23]+id_arr[25]*0.1+id_arr[26]*0.01;
				//printf("%.2f,%.2f,%.2f\n",Buffer_P,Buffer_I,Buffer_D);
				Speed.Kp=Buffer_P;
				Speed.Ki=Buffer_I;
				Speed.Kd=Buffer_D;
			}
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值