/************************************************************
* Function Name : Uart1_Send_Byte
* Description : ´®¿Ú1·¢ËÍ×Ö½ÚÊý¾Ý
* Input : ·¢ËÍ×Ö½Ú
* Return : ÎÞ
*************************************************************/
void Uart1_Send_Byte(u8 Data)
{
USART_SendData(USART1,(u8)Data);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}

/************************************************************
* Function Name : USART1_IRQHandler
* Description : ´®¿Ú1½ÓÊÕÖжÏ
* Input : ·¢ËÍ×Ö½Ú
* Return : ÎÞ
*************************************************************/
void USART1_IRQHandler(void) //´®¿Ú1ÖжϷþÎñ³ÌÐò
{
int Data;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //½ÓÊÕÖжÏ
{

Data =USART_ReceiveData(USART1); //¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý
switch(ReceiveState)
{
case RecSta1:
if(Data == 0xFE)
{
ReceiveState = RecSta2;
}
else
{
ReceiveState = RecSta1;
}
break;

case RecSta2:
if(Data == 0xEF)
{
ReceiveState = RecSta3;
}
else
{
ReceiveState = RecSta1;
}
break;

case RecSta3:
if(Data == 0x7F)
{
ReceiveState = RecSta5;
}
else if(Data == 0x02)
{
ReceiveState = RecSta6;
}
else
{
LedChannel = Data;
ReceiveState = RecSta4;
}
break;

case RecSta4:
ReceiveFlag = 1;
LedState = Data;
ReceiveState = RecSta1;
break;

case RecSta5:
if(Data == 0x8F)
{
Uart1_Send_Byte(0xFE);
Uart1_Send_Byte(0xEF);
Uart1_Send_Byte(0x7F);
Uart1_Send_Byte(0x68);

}
else if(Data == 0xF8)
{
Uart1_Send_Byte(0x04);
Uart1_Send_Byte(0x09);
Uart1_Send_Byte(0xB1);
Uart1_Send_Byte(0x03);
}
ReceiveState = RecSta1;
break;

case RecSta6 :
if(Data == 0x02)
{
LedInitial(1);
flag=1;
ReceiveState = RecSta1;
}
break ;

default:
ReceiveState = RecSta1;
break;
}

}
X86_ControlLed(); //X86µãµÆ
}

stm32串口接收发送数据处理的更多相关文章

  1. STM32串口接收不定长数据原理与源程序(转)

    今天说一下STM32单片机的接收不定长度字节数据的方法.由于STM32单片机带IDLE中断,所以利用这个中断,可以接收不定长字节的数据,由于STM32属于ARM单片机,所以这篇文章的方法也适合其他的A ...

  2. stm32串口接收完整的数据包

    参考了文章:<stm32串口中断接收方式详细比较> 文章地址:http://bbs.elecfans.com/jishu_357017_1_1.html 借鉴了第四种中断方式 串口的配置这 ...

  3. STM32 串口接收大量数据导致死机

    http://blog.csdn.net/origin333/article/details/49992383 以下文章出自上面的链接.感谢原创作者的分享. 在一项目中,使用STM32作为主控,程序运 ...

  4. STM32串口usart发送数据

    主函数请直接关注41行到47行代码!! #include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h> #include ...

  5. stm32 串口接收一次后再也无法接受,接受都为0

    经检测为串口接受后进入别的程序,开辟了2048的临时数组,因为堆栈溢出.stm32总共堆栈为

  6. STM32串口中断的一些资料

    在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里.以供自己查阅,以及方便其他人. TC ====TXE 顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理 ...

  7. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题

    STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...

  8. 018_STM32程序移植之_串口接收中文

    (一)在平时数据传输中很少用到接收中文的情况,但是最近需要用到就花了半天时间来弄弄 (二)接收原理,从现在接收情况分析:一个中文占两个数据的空间,也就是两个十六进制可以转化成为一个中文 (三)示例情况 ...

  9. STM32 串口USART DMA方式发送接收数据

    硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...

随机推荐

  1. 网络学习笔记(一):TCP连接的建立与关闭

      五层网络模型分为:物理层.数据链路层.网络层.传输层.应用层.其中,传输层有两种主要协议:面向连接的TCP(Transmission Control Protocol 传输控制协议).无连接的UD ...

  2. 关于ApiCloud的Superwebview在androidstudio中集成微信支付模块,提示模块未绑定的问题

    前两天ApiCloud项目集成了微信支付模块,android端今天也将ApiCloud官方的uzWxPay.jar集成了.在编译玩测试的时候提示wxPay模块为绑定!我的项目是使用ApiCloud推出 ...

  3. Spring加载流程源码分析03【refresh】

      前面两篇文章分析了super(this)和setConfigLocations(configLocations)的源代码,本文来分析下refresh的源码, Spring加载流程源码分析01[su ...

  4. go并发调度原理学习

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQAAkACQAAD/4QB0RXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAA

  5. CAD.NET二次开发 新建图层 删除图层 指定图层颜色以及线形等

    基于浩辰CAD 2019测试 功能实现 直接上代码: [CommandMethod("CreateAndAssignAlayer")] //新建图层 然后添加到图层表里 publi ...

  6. [转]AI+RPA 融合更智能

    本文转自:https://www.jianshu.com/p/cf25b3dfc0f0 前面已经分析过多次RPA的本质,可以参考 [脱下外衣],看看RPA机器人到底是什么?     哪些AI相关应用技 ...

  7. C#保留2位小数几种场景总结

    场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25.可不可以刚好保留到最后一位不是 ...

  8. revit二次开发wpf里button按钮无法实现事务

    不能在revit提供的api外部使用事务,解决此方法, 1.把button里要实现的功能写到外部事件IExternalEventHandler中,注册外部事件,在button事件中.raise()使用 ...

  9. .NET Core: 在.NET Core中进行单元测试

    单元测试能够帮助开发人员确保所开发的模块.类以及类中的方法等的正确性,在项目开发过程中,及时进行单元测试能够避免不必要的BUG以及提高测试效率. 在本文中,我们会分别来学习如何使用MSTest.xUn ...

  10. 小程序中使用ECharts 异步加载数据

    官网例子都是同步的,怎么引入及同步demo请移步官网 <view class="container"> <ec-canvas id="mychart-d ...