百问网七天物联网智能家居第6篇

1. 串口及网络的驱动封装

调试串口用了uart1,这里不用microlib的话,重定向printf的功能,可以用下面的代码

struct	__FILE{
	int handle;
};

FILE __stdout;


int fputc(int  c , FILE * f)
{
	HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,100);
	return c;
}

教程中说,用microlib的话,后期用操作系统会有问题。

网络功能的封装,主要涉及到uart2串口的接收数据的解析,应用前面笔记的思路,这里任然是采用了串口发送数据超时时间的思路,配合定时器计时,来确定是否发送完成一帧数据。这样的可以,通过定义一个环形队列用来缓存串口2的接收数据。教程中在命令发送的时候,定义了一个环形队列用来接收发送命令之后,返回的命令数据。接收数据的时候,又重新定义了,另外一个环形队列保存数据。这样就有个问题,当有uart2接收数据的时候,就需要进行判断,看时命令之后的返回数据,还是传送的数据信息。传送的数据信息有特征,以+IPD开始的。教程中,还专门的用了一个状态机的方法,对每次接收的数据进行了分析判断,如果是接收到+IPD标志的数据,则要存到一个环形队列中,如果是命令的返回数据,则存到另外一个环形队列中。我这边处理的时候,就是当检查到一帧数据接收完成之后,如果是+IPD的特征的数据,就将环形队列中的数据拷贝出来,就可以了,更加的方便统一。

/* 读取网络数据 */
int driver_net_recvSocket(char * socket, int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值