#define MaxLen 255 //最大长度
u16 RecTimNum=0; //接收计时
FunctionalState RecStart=DISABLE; //接收启动标志位
FunctionalState RecFinish=DISABLE; //接收完成标志位
u8 ReceiveBuf[MaxLen]={0}; //接收缓冲区
u8 BufLen=0; //接收长度
/* 超时接收完成函数 定时器中断1ms进入一次 */
void Rec_TimOut(void)
{
if(RecStart==ENABLE)
{
if(++RecTimNum==5) //5ms没有接收到数据默认接收完成
{
RecTimNum=0; //计时清零
RecStart=DISABLE;
RecFinish=ENABLE; //接收完成标志位置位
//接收完成处理函数
Uart_Send(ReceiveBuf,BufLen); //本段为将接收到的数据重新发送回串口。回环测试
BufLen=0; //长度清零
RecFinish=DISABLE; //接受完成
}
}
}
/* UART接收函数 放在串口接收中断*/
void Uart_Receive()
{
u8 temp;
if(RecStart==DISABLE) //第一次进入串口中断
{
RecStart=ENABLE; //接收启动标志
}
RecTimNum=0; //每次重新进入串口接收中断时,清零计数,表示还未接收完成
temp = UART_ReceiveData8(); //从缓冲区取出数据
ReceiveBuf[BufLen++]=temp; //接收缓冲区
}
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3学习整理】使用 LPUART 的loopback 模式实现核间通讯被打赏¥28元 | |
| arduinounoq原生zephyr环境搭建被打赏¥31元 | |
| 树莓派3+Klipper,MPU6050共振补偿被打赏¥41元 | |
| GroveCreatorKit套件+摇杆测评被打赏¥18元 | |
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
我要赚赏金
