智能采摘小车进展

此博客为记录419通信实验室智能小车+机械臂项目的进展博客

2022年10月6日

串口一对多下载与通信

在这里插入图片描述

实现了单片机A和单片机B的串口下载与接收

具体的操作步骤见那边写串口的文章

实现了编码器EN1和EN3的读取

Cube配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码配置
/* USER CODE BEGIN 4 */
/******************************
	功能:每5ms在定时器中执行一次,
				获取电机速度SPEED
	返回值:电机速度SPEED
	形参:无
*******************************/
int GetSpeed()
{
	short SPEED = 0;
//	static short last = 0;
	SPEED = (short)(__HAL_TIM_GET_COUNTER(&htim2)*100)/(4*16*10);//哪个定时器对应不同的编码器
	__HAL_TIM_SET_COUNTER(&htim2,0);
	return SPEED;
}
/* USER CODE END 4 */

int mian()里面,while(1)之前

	/*打开定时器中断*/
	HAL_TIM_Base_Start_IT((TIM_HandleTypeDef *)&htim7);
	/*开启串口DMA接收,默认DMA为循环模式,千万不要放在循环里!!*/
	HAL_UART_Receive_DMA(&huart1,(uint8_t*)&TargetSpeed,sizeof(TargetSpeed));
	/*打开编码器捕获*/
	HAL_TIM_Encoder_Start(&htim4,TIM_CHANNEL_ALL);//这是EN3
	HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_ALL);//这是EN1
结果

在这里插入图片描述

2022年10月7日

实现了四个编码器的读取

定时器编码器
TIM2EN1
TIM3EN2
TIM4EN3
TIM5EN4

2022年10月21日

实现了树莓派与STM32的收发数据测试

我们用的树莓派是4B,之前用了3B+的做了串口接收的测试,参考的是这一篇文章
树莓派3B+与STM32进行串口通讯,收数据是通了。发数据还有点问题,然后就去找了很多,发现是利用Python的Serial库进行的串口通讯

import serial
dev=serial.Serial('/dev/ttyAMA0',115200,timeout=0.5)#读取串口号,设置波特率,连接超时0。5秒
while True:
    print(dev.readlins())#读显示出串口的数据
    s= 6
    dev.write("{}\r\n".format(s).encode())#将s写入串口中

STM32程序

这里就关系到我们之前用的串口发送接收重定义了,

/*fgetc*/
int fgetc(FILE * F)
{
HAL_UART_Receive (&huart1,&ch_r,1,0xffff);//接收
return ch_r;
}

这里的HAL_UART_Receive()他在HAL库中不是阻塞式接收,也就是说scanf在32中被执行的时候并不会暂停,所以为了确保其能接收到数据,我们要将他手动改成阻塞式的

 /* USER CODE BEGIN 3 */
			printf("Aaaa\n");
			printf("1145141919810\n");
			printf("woshiA\n");
			HAL_Delay(1000);
		  n=0;
		  while(n == 0)
		  	{
			scanf("%d",&n);
			}//使其变成手动的阻塞式接收
			HAL_Delay(1000);
			printf("output:%d",n);
			HAL_Delay(1000);

接收发送成功截图
在这里插入图片描述
这里的output就是收到的数据,但是不知道为啥这个minicom显示的是这样的,不影响调试,就是很丑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sol-itude

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值