stm32串口接收发送数据处理
/************************************************************
* 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串口接收发送数据处理的更多相关文章
- STM32串口接收不定长数据原理与源程序(转)
今天说一下STM32单片机的接收不定长度字节数据的方法.由于STM32单片机带IDLE中断,所以利用这个中断,可以接收不定长字节的数据,由于STM32属于ARM单片机,所以这篇文章的方法也适合其他的A ...
- stm32串口接收完整的数据包
参考了文章:<stm32串口中断接收方式详细比较> 文章地址:http://bbs.elecfans.com/jishu_357017_1_1.html 借鉴了第四种中断方式 串口的配置这 ...
- STM32 串口接收大量数据导致死机
http://blog.csdn.net/origin333/article/details/49992383 以下文章出自上面的链接.感谢原创作者的分享. 在一项目中,使用STM32作为主控,程序运 ...
- STM32串口usart发送数据
主函数请直接关注41行到47行代码!! #include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h> #include ...
- stm32 串口接收一次后再也无法接受,接受都为0
经检测为串口接受后进入别的程序,开辟了2048的临时数组,因为堆栈溢出.stm32总共堆栈为
- STM32串口中断的一些资料
在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里.以供自己查阅,以及方便其他人. TC ====TXE 顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理 ...
- 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 ...
- 018_STM32程序移植之_串口接收中文
(一)在平时数据传输中很少用到接收中文的情况,但是最近需要用到就花了半天时间来弄弄 (二)接收原理,从现在接收情况分析:一个中文占两个数据的空间,也就是两个十六进制可以转化成为一个中文 (三)示例情况 ...
- STM32 串口USART DMA方式发送接收数据
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...
随机推荐
- 浅谈Linux基本命令
本篇文章作为Linux 入门的必备篇,主要简述Linux系统目录结构和Linux 基本Shell命令,大致内容如下: 一 Linux目录及其概述 如下目录为CentOS 7目录结构 1.建立 ...
- cordova+vue打包webapp
使用cordova+vue打包webapp,可以快速给网页套上一个android和ios壳子,完成一个app的开发. 1. 环境准备. (1)node.js 下载地址: https://nodejs ...
- Manacher's Algorithm(马拉车算法)
## 背景 该算法用于求字符串的最长回文子串长度. ## 参考文章 >[最长回文子串——Manacher 算法](https://segmentfault.com/a/1190000003914 ...
- 一个简易的Python爬虫,将爬取到的数据写入txt文档中
代码如下: import requests import re import os #url url = "http://wiki.akbfun48.com/index.php?title= ...
- Swiper4.x使用方法
1.首先加载插件,需要用到的文件有swiper.min.js和swiper.min.css文件.可下载Swiper文件或使用CDN. <!DOCTYPE html> <html> ...
- Django 无名参数与有名参数
无名参数 配置 urls ,我们需要导入 url 模块,以()定义一个无名的变量 from django.contrib import admin from django.urls import pa ...
- 原生jQuery代码
function myJquery(selector){ if(typeof selector=="string") { if (selector.charAt(0) == &qu ...
- [目录]C#学习笔记
C#是微软.NET平台下最重要的编程语言,它与C.C++不同,C#编写的源程序是托管在.NET平台下的.C#源程序经C#编译器编译成中间语言(IL,Intermediate Language),再经C ...
- C# 通用单例窗体类
/// <summary> /// 通用的单例制作器 /// </summary> /// <typeparam name="T"></t ...
- Vue与React两个框架的区别对比
简单介绍 React--Facebook创建的JavaScript UI框架.它支撑着包括Instagram在内的大多数Facebook网站.React与当时流行的jQuery,Backbone.js ...