• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: STM32  USART  DMA  

资源简介

STM32F1多串口源代码,使用DMA中断,可以实现多个串口之间的透传,非常方便修改,只需在文件头部define部分修改就可以。

资源截图

代码片段和文件信息

/**
  ******************************************************************************
  * @file    usart.c
  * @author  kit7828
  * @version V1.0
  * @date    2018-04-09
  * @brief   多usart应用
  ******************************************************************************
  * @attention
  *
  * 平台: STM32 103RCT6 最小系统板 
  * 用途: 多串口应用,均使用DMA通道传输,避免中断影响串口数据
  * 说明: GA6,MP3,DEBUG以及GPS等
* 说明: 串口的核心功能是对接收内容的处理,发送比较简单,只需处理缓存区就可
  *
  ******************************************************************************
*
*   main.c中调用方法
* uart1_init(115200); //GA6
* uart2_init(115200); //DEBUG
* uart3_init(115200); //MP3
* uart4_init(115200); //TEST
*
* DMA_Configuration();
  */
  
//#include “sys.h“
#include 
#include “usart.h“         
//#include “led.h“ 
//////////////////////////////////////////////////////////////////////////////////          

//////////////////////////////////////////////////////////////////////////////////       

#define USART1_TX_DMA_Channel DMA1_Channel4
#define USART1_RX_DMA_Channel DMA1_Channel5
#define USART2_TX_DMA_Channel DMA1_Channel7
#define USART2_RX_DMA_Channel DMA1_Channel6
#define USART3_TX_DMA_Channel DMA1_Channel2
#define USART3_RX_DMA_Channel DMA1_Channel3
#define UART4_TX_DMA_Channel DMA2_Channel5
#define UART4_RX_DMA_Channel  DMA2_Channel3

//////////////////////////////////////////////////////////////////////////////////     
#define BUFFSIZE 192

u8 USART1_SEND_DATA[BUFFSIZE];
u8 USART1_RECEIVE_DATA[BUFFSIZE]; 

u8 USART2_SEND_DATA[BUFFSIZE]; 
u8 USART2_RECEIVE_DATA[BUFFSIZE];

u8 USART3_SEND_DATA[BUFFSIZE]; 
u8 USART3_RECEIVE_DATA[BUFFSIZE];

u8 UART4_SEND_DATA[BUFFSIZE]; 
u8 UART4_RECEIVE_DATA[BUFFSIZE];

u8 USART1_TX_Finish=1;
u8 USART2_TX_Finish=1;
u8 USART3_TX_Finish=1;
u8 UART4_TX_Finish =1;

//串口之间可以自由切换,只需更改如下define中的内容
#define DEBUG_UART USART2

#define TEST_TX_Finish USART3_TX_Finish
#define TEST_USART_SEND  USART3_SEND_DATA
#define TEST_TX_DMA_Channel USART3_TX_DMA_Channel
#define USART3_Recv TEST_Recv

#define SOUND_TX_Finish UART4_TX_Finish
#define SOUND_USART_SEND  UART4_SEND_DATA
#define SOUND_TX_DMA_Channel UART4_TX_DMA_Channel
#define UART4_Recv SOUND_Recv

#define GPRS_TX_Finish USART1_TX_Finish
#define GPRS_USART_SEND  USART1_SEND_DATA
#define GPRS_TX_DMA_Channel USART1_TX_DMA_Channel
#define USART1_Recv GPRS_Recv

#define DEBUG_TX_Finish USART2_TX_Finish
#define DEBUG_USART_SEND  USART2_SEND_DATA
#define DEBUG_TX_DMA_Channel USART2_TX_DMA_Channel
#define USART2_Recv DEBUG_Recv
//////////////////////////////////////////////////////////////////
//加入以下代码支持printf函数而不需要选择use MicroLIB          
#if 1
#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 

int handle; 

}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 

x = x; 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      38105  2018-04-10 11:03  UART\usart.c

     文件        619  2018-04-10 09:41  UART\usart.h

     目录          0  2018-04-10 11:03  UART

----------- ---------  ---------- -----  ----

                38724                    3


评论

共有 条评论