您的位置 首页 硬件

根据STM32完成串口的两个分案解析

基于STM32实现串口的两个分案解析-首先总结一下串口232,422,485

串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。

串口422:可双向传输,4线全双工,2线单工。

串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接收端:+200mV逻辑“1”,-200mV逻辑“0”。

首要总结一下串口232,422,485

串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。

串口422:可双向传输,4线全双工,2线单工。

串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接纳端:+200mV逻辑“1”,-200mV逻辑“0”。

关于串口的完成有以两个计划:

计划一,和原子的《例说STM32》相同,首要接纳,然后处理,没有音讯验证处理,这样就会呈现音讯掩盖,音讯犯错后死机,无法清晰区别指令,无法及时应对握手信号。计划二,学习uC/OSII的音讯行列,进入中止服务函数之后,封闭中止,接纳数据,假如没有数据接纳,等候一段时刻(时刻和波特率有关)后开中止,出中止,然后在对接纳到的数据进行处理,下面看代码:

根据STM32完成串口的两个分案解析

音讯行列及其初始化函数:

/*osq结构体来办理音讯行列*/

typedefstructos_q{/*QUEUECONTROLBLOCK*/

u8*OSQStart;/*Pointertostartofqueuedata*/

u8*OSQEnd;/*Pointertoendofqueuedata*/

u8*OSQIn;/*PointertowherenextmessagewillbeinsertedintheQ*/

u8*OSQOut;/*PointertowherenextmessagewillbeextractedfromtheQ*/

u8OSQSize;/*Sizeofqueue(maximumnumberofentries)*/

u8OSQEntries;/*Currentnumberofentriesinthequeue*/

}OS_Q;

OS_Q*posq,osq;

u8USART_RX_BUF[length_buff];//循环行列,存储承受的信息。

voidOS_QInit()//初始化结构体

{

posq=&osq;

posq-》OSQStart=USART_RX_BUF;

posq-》OSQEnd=&USART_RX_BUF[length_buff];

posq-》OSQIn=USART_RX_BUF;

posq-》OSQOut=USART_RX_BUF;

posq-》OSQSize=length_buff;

posq-》OSQEntries=0;

}

///*在中止函数中将一条音讯的一切字节一次性得保存在音讯行列中*/

u8message_buff[20];

voidUSART1_IRQHandler(void)

{

u8num=0;

//u8i;

u8TIme=0;//承受超时技能

USART1-》CR1&=0XFFDF;

LED=!LED;

while(1)

{

if(USART1-》SR&(1《《5))//假如有数据收到的话,将音讯存在音讯行列中

{

message_buff[num]=(u8)USART1-》DR;

num++;

*posq-》OSQIn++=(u8)USART1-》DR;

posq-》OSQEntries++;

if(posq-》OSQIn==posq-》OSQEnd)

{

posq-》OSQIn=posq-》OSQStart;

}

TIme=0;

}

else

{

delay_us(10);

TIme++;

if(TIme》=50)break;

}

}

USART1-》CR1|=0X0020;

}

这样就把数据一次性悉数存储下来了,剩余的便是对音讯缓冲器message_buff[]中的音讯进行处理了,这样就处理了音讯掩盖,音讯犯错无法纠正的问题,至于音讯怎样处理便是根据不同的需求不同的处理,别的留意,握手信号好用定时器中止。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/346775.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部