当前位置: 首页 > news >正文

上传产品网站怎么做的长沙seo培训班

上传产品网站怎么做的,长沙seo培训班,手机制作购物网站,做兼职的网站是不是真的吗今日尝试配通俩个C8T6单片机之间的无线串口通信,文章提供原理,源码,测试效果图,测试工程下载: 目录 传输不规范问题: 串口通信资源: 单个串口资源理解: 单片机串口资源&#xf…

今日尝试配通俩个C8T6单片机之间的无线串口通信,文章提供原理,源码,测试效果图,测试工程下载:

目录

传输不规范问题:

串口通信资源:

单个串口资源理解:

单片机串口资源:

测试目标与测试硬件连接:

串口初始化与串口中断接收逻辑:

串口初始化:

初步测试能否收发:

 阶段测试效果:

规范接收:

几个串口配置方面的注意点:

测试接收:


今日学习加强 :俩片单片机之间的串口通信

单片机的串口通信要想配置好发送与接收,都很简单,如果没有任何意外,我们甚至不需要定义过于规范的 帧头、帧尾 就能实现最简单的俩个单片机的通信;

传输不规范问题:

但在实际的数据传输的过程中,难免会出现:

1.某次传输不小心丢失数据,该次传输所得需作废。

2.发送 或者 接收 了一次偶尔的错误帧。

3.发送方开机比较快,接收方的第一个数据是从中间开始接收的。

............

以上这些不对劲的接收情况的数据是需要直接剔除的,直到接收到正确的数据。

本文会使用一个额外的无线通信模块,大家可从下文了解其配置,如果有自己的无线串口模块,一样配置好接上使用即可,没有无线串口模块,可以勉强使用杜邦线代替,但用杜邦线就模拟不了误传情况了~

DL_20无线串口模块_NULL指向我的博客-CSDN博客

串口通信资源:

单个串口资源理解:

引脚方面,STM32每一个串口都有至多五个引脚:(有的串口只有TX RX )

1.TX 和 RX  发送与接收

2.SCLK        时钟

3.nRTS        请求发送

4.nCTS        允许发送

 其中最常用的、必不可少的就是TX与RX了,SCLK是同步时钟,是同步通信时用到的,而我们此次的无线通信属于异步通信,因此用不到,3、4是硬件流控制的引脚,我们也用不到。

单片机串口资源:

这是我之前文章总结的串口资源: STM32 F103 C8T6共有三个串口:

 这里其余没有特别需要注意的地方,但在初始化时USART1与2、3有区别,我们除了更改引脚之外,同时需要注意:

USART1是挂载在APB2总线上的外设接口(更快),而其余俩个串口都是挂载在APB1总线上的,因此在初始化开启端口时钟时此处需要额外注意。

 

测试目标与测试硬件连接:

测试目标:

1.实现俩片单片机的无线通信

2.单片机1的串口1 接无线通信模块,并不断发送数据

3.单片机2的串口1接无线通信模块,接收单片机1的数据,串口2接串口转USB模块,将接受到的数据回传到上位机电脑(注意有没有安装CH340等类似驱动)

 

串口初始化与串口中断接收逻辑:

串口初始化:

这部分不用细讲,本文主要是写串口接收方逻辑,串口初始化配置方面,不清楚的可以看这篇文章:

STM32 F103C8T6学习笔记3:串口配置—串口收发—自定义Printf函数_NULL指向我的博客-CSDN博客

 

初步测试能否收发:

 单片机1的程序带有一个定时器每秒使用串口1发送12345的程序,串口1是连接了无线模块的,因此同样在串口1连接了无线模块的单片机2会在串口1中断接收到这个数据,而我们先不写任何判断,接收到就返还数据看看~进行初步的测试,这个过程的测试程序,没法存下任何有用的数据,只是简单的返还而已:

单片机1 定时器每秒进中断,使用串口1发送一次12345:

 单片机2 串口1中断接收到数据 直接通过串口2链接了串口转USB模块外传给上位机:

 阶段测试效果:

下载程序到俩个单片机,查看阶段测试效果:

测试结果中:看似一给单片机1通电了,单片机2就能收到信息反馈给上位机,分毫不差,但这个过程单片机2其实并未将数据保存下来,也就是它并不知道自己接受到的是怎么回事,只是无脑地转发消息罢了

规范接收:

几个串口配置方面的注意点:

1.俩片单片机收发的时间点要岔开,严格杜绝一个程序都写了收和发,却下载给俩个单片机,这样容易会使得俩个单片机变成“永动机”,卡在那,建议刚开始就单个只管发送,关闭接收中断,另一个只管接收

2.注意其他中断源(尤其是定时器中断),即使是1s进一次定时器中断,也可能会对接收方的串口中断、主程序CPU处理过程 造成毁灭性的打断(时机不凑巧),因此在进入主程序处理接收操作时,应该要想办法关闭其余中断,处理完毕再打开其余中断

3.注意标志位的正确时机勿忘记清除:中断标志位,数据接收完成标志位,数组缓存下标,甚至是缓存数组也要在处理完后及时清零。

4.其余配置有中断的外设,如果在系统运行时有进入中断的时机,(尤其是定时器溢出中断,这个必定会进)一定要给其配好中断服务函数,并且中断服务函数要写好清除标志位等退出中断的操作,否则程序容易在中断服务函数那卡住。

这样接收,就能将数据存在数组进行下一步处理了:

#include "USART1.h"char usart_buf[25];
char usart_flag=0;
char usart_xb=0;void USART1_IRQHandler(void)
{//接收中断if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){//清除标志:USART_ClearFlag(USART1, USART_FLAG_RXNE);//数组承接数据usart_buf[usart_xb]=USART_ReceiveData(USART1);//如果接收到数据结尾:if(usart_buf[usart_xb]=='\n' && usart_buf[usart_xb-1]== '\r') {usart_flag=1;}//下标最大不超25if(usart_xb==25) {usart_xb=0;memset(usart_buf,0,sizeof(usart_buf));}//下标移动usart_xb++;}}//确保你已经包含了相应的头文件,例如`#include <stm32f10x.h>`。
//		__enable_irq();  // 开启总中断
//    __disable_irq(); // 关闭总中断
//		__disable_irq(); // 屏蔽中断
//    __enable_irq(); // 恢复中断void handle_uart1(void)
{if(usart_flag==1){__disable_irq(); // 屏蔽中断UsartPrintf (USART2,"\r\n");UsartPrintf (USART2,"%s",usart_buf);		usart_xb=0;memset(usart_buf,0,sizeof(usart_buf));  //处理完命令别忘了将数组清零,以便接收下个命令usart_flag=0;__enable_irq(); // 恢复中断}
}

测试接收:

接收情况正常:

 测试工程下载:

https://download.csdn.net/download/qq_64257614/88212346?spm=1001.2014.3001.5503

http://www.dinnco.com/news/13494.html

相关文章:

  • 一个服务器可以备案几个网站广告营销平台
  • 海南靠谱网站建设定制深圳网站做优化哪家公司好
  • 做网站时字幕怎么做百度竞价排名软件
  • 简述网站推广方式广州seo公司排名
  • 苏州h5网站建设价钱网站页面关键词优化
  • 公司制作网站怎么做的企业培训有哪些方面
  • 企业网站建设应该计入哪个科目淘宝关键词排名怎么查
  • 推广网站怎样做浙江百度查关键词排名
  • 怎样在手机上做自己的网站类似火脉的推广平台
  • 尼高网站设计公司seo测试工具
  • 做网站在哪里做比较好搜索引擎优化有哪些要点
  • 网站做系统叫什么名字吗seo网站优化系统
  • 网站底部固定广告代码seo推广专员
  • 校园网建设网站特色网络营销的优化和推广方式
  • 网站建设公司(深圳信科)在哪里找软件开发公司
  • 门户网站的注意要素东莞做网络推广的公司
  • 青海网站开发公司百度实时热点排行榜
  • 网站栏目一般有哪些南昌网站设计
  • 国外获奖flash网站2021百度新算法优化
  • 做网站域名网站推广怎样做
  • 网页动态设计怎么做网站优化排名资源
  • 阳江做网站详细解读qq空间刷赞推广网站
  • 有发展的小企业网站建设今日国内新闻最新消息10条新闻
  • 网站关键词几个字百度推广登录地址
  • 专门做爬虫的网站武汉全网推广
  • ideo设计公司上海太原seo软件
  • 大气扁平网站网络优化包括
  • wordpress客户端建站网络营销推广策划的步骤
  • 学互联网做网站是什么seo内容优化是什么意思
  • 做网站一天能接多少单百度快照优化推广