一直被说是就不能把几个串口放在一起,写个标准例程直接用,非要每次用哪个串口才现场改程序,被迫把usart1,usart2,usart3进行了资源整合,挂在这以备不时之需。

功能简述:

串口1,串口2,串口3串口内自收自发数据,串口之间通信互发数据,读取串口的缓冲区进行收发都可以,资源冲突已经解决,可以直接用。

程序声明:

根据标准例程对usart1,usart2,usart3进行了GPIO,时钟,串口等配置,放在了一个工程中,为每个串口定义了自己的缓冲区(大小也是)用于存储串口接收到的数据。

因为主要用的是usart1来进行调试,所以就为usart1中配置了标准库函数,若需要用其他串口来打印输出,可以将下方代码复制到对应的.c文件,更改USART1串口号即可。

#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{ int handle;
}; FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
void _sys_exit(int x)
{ x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{   while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   USART1->DR = (u8) ch;      return ch;
}
#endif

哪个串口需要用到ucos就复制这段代码

#if SYSTEM_SUPPORT_OS
#include "includes.h"                 //ucos 使用
#endif

移植注意事项:

需要更改串口对应的GPIO引脚,对应的缓冲区变量,缓冲区大小,接收标记变量,使能变量,串口号,函数名,时钟源,比如串口1的时钟源是APB2,串口2则是APB1,增加更多串口时,要同时增加变量声明,如串口2

#ifndef __USART2_H
#define __USART2_H

如果出现#223-D: function "xxxxxx" declared implicitly这种某个函数已经在头文件中声明了,但是在调用时出错就是没有可能声明冲突了,改个新的名字。

例程下载:https://download.csdn.net/download/qq_41573860/12768743

STM32F407多路串口通信进行数据收发相关推荐

  1. STM32CubeMX+STM32F407+FreeRTos+LAN8720 以太网通信实现数据收发功能

    目录 前言 一.STM32CubeMX配置 二.修改代码 三.硬件测试 总结 前言 该工程应用的以太网芯片是LAN8720,代码是基于STM32CUbeMx6.2.1配置生成的,在CubeMx中配置了 ...

  2. STM32CubeMX系列教程8:配置工程模板(串口+不定长数据收发+DMA+IDLE中断+软中断)

    文章目录 摘要 生成工程 配置外设 1.配置时钟与Debug 2.配置串口与DMA 3.配置定时器与中断 配置时钟树 配置工程设置 点击`GENERATE CODE`生成工程 修改源码 配置软中断 配 ...

  3. #串口通信接收数据位和数据对齐的BUG

    前言 最近好像和BUG杠上了,一直在忙着找bug,上个礼拜修了一个礼拜的电路板,前天又开始找程序的BUG,直到今天才结束.在本次找程序BUG中自己学会了数据对齐和串口通信注意的地方.本次主要记录找BU ...

  4. C#串口通信工作笔记0001---嵌入式_串口通信_数据发送

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个是最终的样子程序的 这个是这次要做的程序的样子 使用这个串口通信的小控件 4800是波特率 D ...

  5. 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据

    由于个人应用到3轴传感器,所以买了直接买了一个9轴的,用于学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接打印数据,接收传感器数据和与传感器进行通信:需要看产品文档 ...

  6. 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释

    这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...

  7. TinyOS之串口通信TestSerial数据包分析

    目录 1.串口通信样例 2.编译烧录程序 3.获取节点发送的串口数据 4.节点数据的简易分析 5.crc校验方法 6.接收与发送的区别 1.串口通信样例 本文以tinyos-2.1.1下的TestSe ...

  8. Arduino与掌控板通过软串口通信将数据上传阿里云

    注:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明. 在Mind+上使用 Arduino UNO上云的话,需要购买DFRobot的OBLOQ物联网模块,由 ...

  9. 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验

    一.介绍 对于树莓派 3B+来说,他的UART功能有三种: 1.内部蓝牙使用: 2.控制终端使用: 3.与其他设备进行串口通信. 在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树 ...

最新文章

  1. VML 画统计 柱状、饼图、折线
  2. centos7 以上和以下版本设置
  3. html不同平台,基于H5端自定义平台怎么使用和H5端不一样的index.html?
  4. Hibernate 简介(百度)
  5. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)
  6. prefuse学习(一)用非数据库连接和xml的方式读入数据
  7. Linux fork的写时复制
  8. Java设计模式5:原型模式
  9. JavaSE----多态
  10. es6 let和const
  11. 修改Imdict做自己的分词器
  12. SharePoint 2013技巧分享系列 - 隐藏Blog和Apps左侧导航菜单
  13. 计算机丢失vcomp110.dll,msvcp110.dll丢失一键修复工具
  14. 一个按钮控制定时器的开始与暂停
  15. The requested URL *** was not found on this server
  16. PHP字符串函数strtolower(将字符串转化为小写)
  17. 在verilog中将 .txt文件读入reg/将reg的数据写入.txt
  18. 奇怪的小鸭子也增加了
  19. 【重新安装MySql5.7.24 / MySql57过程】好多个错误,慢慢改好的
  20. 《哲学家们都干了些什么》读后感

热门文章

  1. 酷柚易汛云进销存(SAAS系统)1.0.7升级更新
  2. net framework 4.0 4.6.1
  3. html自动播放片头预览,AE脚本-创建html网页GIF动图预览批量输出GIF动图工具脚本aw_PreviewGenerator v1.6...
  4. SIMCOM-4G模组-A7670C_FASL-SOC二次开发-MQTT-2
  5. 芯讯通SIMCOM A7680C (4G Cat.1 通信模组)AT指令测试 TCP通信过程
  6. 初等数学O 集合论基础 第五节 群、环、域的概念
  7. 计算机专业几大标准,计算机5大类分类标准
  8. Python全局变量及Global关键字( Global variable in Python)
  9. xp彻底删除mysql_如何彻底卸载mysql(xp)
  10. Google Earth Engine(GEE)——风向(RTMA: Real-Time Mesoscale Analysis数据集)可视化趋势图(美国区域为例)