STM32F407多路串口通信进行数据收发

news/2025/1/12 3:45:11/

一直被说是就不能把几个串口放在一起,写个标准例程直接用,非要每次用哪个串口才现场改程序,被迫把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


http://www.ppmy.cn/news/724279.html

相关文章

乐鑫Esp32学习之旅 20 一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。

本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。…

stm32F103C8T6基于FreeRTOS操作系统的多任务

目录 一、FreeRTOS简介1.什么是FreeRTOS?2. FreeRTOS特点 二、创建项目三、编写代码四、编译烧录五、总结参考链接 一、FreeRTOS简介 1.什么是FreeRTOS? 我们看一下FreeRTOS的名字,可以分为两部分:Free和 RTOS,Free 就是免费的、自由的、不受约束的意…

深入理解STM32内存管理

参考:详解ROM和RAM 作者:嵌入式实验楼 网址:https://mp.weixin.qq.com/s/y2aG7kX-6CTyeMzEJW_YHw 内存相关博文: 1、内存四区(代码区 静态区 栈区 堆区) 2、程序运行时对应的内存分布(BSS段、数…

stm32F103C8T6基于FreeRTOS操作系统的多任务(STM32CUBEMX)

文章目录 一、简介二、任务要求三、创建项目三、编写任务代码四、效果五、参考 一、简介 FreeRTOS,是指实时操作系统,是可以多任务进行的一个操作系统,相当于裸机开发而已,任务的实现相对方便很多。FreeRTOS(读作"free-arr-…

32位机器最大支持开多少个线程?

http://blog.csdn.net/tony_wong/article/details/38978185 https://www.zhihu.com/question/29468200?sortcreated 小结:理论上,一个用户进程最大可以分配的内存是2G(实际能用的大约为1.5G),一个线程栈需要预留1M内…

STM32—ADC多通道采集电压

文章目录 ADC详解程序说明函数主体引脚配置ADC和DMA配置主函数 ADC详解 前面的博客中详细介绍了STM32中ADC的相关信息,这篇博客是对ADC内容的一个总结提升,ADC的详细介绍:ADC详解 程序说明 为了使这次代码阅读方便,博主没有在头…

STM32CubMx+RT-Thread Studio实现多线程过程

本文主要介绍如何通过STM32CubMxRT-Thread Studio实现嵌入式多线程运行的步骤。 新建工程 RT-Thread Studio工程 打开RT-Thread Studio软件,新建工程。选择RT-Thread项目 从芯片选型出发,配置芯片信息,这里我的板子是原子探索者F407ZGT6&a…

国产单片机GD32系列开坑,带你零死角玩转GD32 第一章

【开坑国产单片机GD32系列,带你零死角玩转GD32】 第一章 GD32基本资料介绍 目录 【开坑国产单片机GD32系列,带你零死角玩转GD32】第一章 GD32基本资料介绍 前言一、STM32 VS 国产MCU二、GD32与STM32的对比1.STM32F103xxxx与GD32F103xxxx的对比总结 前言 …