单片机上的串口是日常调试和做一些简单人机交互的一种重要的通信方式,其原理网上有一大堆,这里就不再赘述了,下面主要和大家分享一种我在实际项目中经常用到的一个简单的串口通信协议和实现方式。
下面以STM32F103这款单片机为例:
需要的片上资源:UART、TIM
协议格式:
描述:整个数据包由16个字节长度的数据组成 两位帧头 两位功能位 十位数据位 两位帧尾
实现原理:
将串口配置成中断接收,每次接受到一个8bit的数据则产生一个中断,进入中断后把串口标志位清零并对接受到的数据进行计数和存储,超过16个数据则重新计数,举个例子:
void USART1_IRQHandler(void)//中断服务函数
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断标志位清零