一、初始化

1.初始化串口,时钟

MX_USART1_UART_Init();

串口时钟初始化为内部时钟

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_HSI;

PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_HSI;

2.初始化dma,端口复用

HAL_UART_MspInit()

打开空闲帧中断

__HAL_UART_ENABLE_IT(uartHandle, UART_IT_IDLE);

二、启动接收传送

1.启动数据接收

/*启动DMA接收传送*/
void Mx_Uart_DebugRxStart(UART_E uart)
{
if(uart>= UART_MAX){return ;}
if(!g_stMyUart[uart].bDebugRxStop){return ;} for(uint8 i=0;i<UART_DEBUG_BUFF_LEVER;i++)
{
if(!g_stMyUart[uart].bDebugRxAvail[i])
{
g_stMyUart[uart].bDebugRxStop=false;
HAL_UART_Receive_DMA(g_stMyUart[uart].huart
,g_stMyUart[uart].cDebugBuffRx[i]
,UART_RX_BUFF_SIZE-1);
g_stMyUart[uart].cCurDebugRxBuff=i;
g_stMyUart[uart].uDebugRxCount[i]=0;
break;
}
}
}

2.如果接收完数据则触发DMA中断,触 发DMa中断后,调用传送完成中断,如果收到空闲帧,也会调用传送完成中断

uint32_t temp;
temp = huart->Instance->ISR;
temp = huart->Instance->RDR;
if(HAL_OK !=HAL_UART_DMAStopRx(huart))
{
Error_Handler();
}
g_stMyUart[uart].bDebugRxStop=true;
if(NULL != huart->hdmarx)
{
temp = huart->hdmarx->Instance->CNDTR;
MX_UART_DebugGetData(uart,temp);
Mx_Uart_DebugRxStart(uart);
}
else{Error_Handler();}

停止DMA传送,置接收停止标志,读取数据,重新开始数据接收

三、发送DMA

1.启动传送

if(HAL_UART_Transmit_DMA(g_stMyUart[UART_DEBUG].huart
, g_stMyUart[UART_DEBUG].cDebugBuffTx[i]
, g_stMyUart[UART_DEBUG].uDebugTxCount[i]) == HAL_OK)
{
g_stMyUart[UART_DEBUG].cCurDebugTxBuff=i;
g_stMyUart[UART_DEBUG].uDebugTxCount[i]=0;
}

2.DMA传送完成时,打开串口发送完成中断,

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
UART_E uart;
for(uart=UART_DEBUG;uart<UART_MAX;uart++)
{
if(g_stMyUart[uart].huart == huart){break;}
}
if(UART_MAX == uart){return ;} HAL_UART_DMAStopTx(huart);
if(g_stMyUart[uart].cCurDebugTxBuff <UART_DEBUG_BUFF_LEVER)
{
g_stMyUart[uart].bDebugTxEn[g_stMyUart[uart].cCurDebugTxBuff]=false;
}
}

UartDma工作方式的更多相关文章

  1. dicom通讯的工作方式及dicom标准简介

    本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是“存储”跟“通讯”. 文件数据组织方式  网络数据组织方式.文件数据组织方式就是解析静态 ...

  2. 通过iMindMap改善你的工作方式的教程

    对于iMindMap 10,已经介绍了很多新增与改进的功能,你以为已经结束了?其实不然,本文,小编还会继续和你分享它的一个新功能与一个更新功能.这两个功能将在不经意间改善你的工作方式. 多媒体支持 在 ...

  3. 输入/输出系统的四种不同工作方式对CPU利用率比较

    程序控制工作方式:输入/输出完全由CPU控制,整个I/O过程中CPU必须等待其完成,因此对CPU的能力限制很大,利用率较低 程序中断工作方式:CPU不再定期查询I/O系统状态,而是当需要I/O处理时再 ...

  4. 从一个简单例子来理解js引用类型指针的工作方式

    <script> var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);// --> undefined conso ...

  5. SPI总线的特点、工作方式及常见错误解答

    1.SPI总线简介 SPI(serial peripheral interface,串行外围设备接口)总线技术是Motorola公司推出的一种同步串行接口.它用于CPU与各种外围器件进行全双工.同步串 ...

  6. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  7. MVC4 WebAPI(二)——Web API工作方式

    http://www.cnblogs.com/wk1234/archive/2012/05/07/2486872.html 在上篇文章中和大家一起学习了建立基本的WebAPI应用,立刻就有人想到了一些 ...

  8. php在apache中一共有三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL

    php在apache中一共有三种工作方式:CGI模式.FastCGI .FastCGI是什么? FastCGI是语言无关的.可伸缩架构的CGI开放扩展,其主要行 为是将CGI解释器进程保持在内存中并因 ...

  9. Git教程(9)集中式工作方式常用的设计分支的方案

    Git是一个复杂的版本管理系统,管理代码有很多工作方式,如集中式,管理者式,司令/副官式 本文是假设选用集中式工作方式时,设计分支的方案. 中小型项目: 维护两个长期分支,分别是master 和 de ...

随机推荐

  1. Java基础知识强化之网络编程笔记24:Android网络通信之 AndroidAsync(基于nio的异步通信库)

    1. AndroidAsync   AndroidAsync 是一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库,AndroidAsync 是一 ...

  2. Android(java)学习笔记98:关于string类型的面试题

    package cn.itcast_02; /* * String s = new String(“hello”)和String s = “hello”;的区别? * 有.前者会创建2个对象,后者创建 ...

  3. sql 自定义函数-16进制转10进制

    做过笔记,好记性不如烂笔头: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HEXTOINT]') and ...

  4. TCP/IP与UDP区别

    最近面试,问到这方面的问题,这里总结一下: TCP (Transmission  Control  Protocol   传输控制协议):面向连接的,不可靠的,数据流服务.UDP (User  Dat ...

  5. Simple Arithmetics

    def Add(a, b): l = [] alen = len(a) blen = len(b) result = str(int(a) + int(b)) relen = len(result) ...

  6. [改善Java代码]多种最值算法,适时选择

    建议64:多种最值算法,适时选择. 对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构知识.在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现.下面以求最 ...

  7. 关于Winform发布时,资源文件缺失的解决方案

    今天和大家分享一下,我这几天一直困惑的问题,今天不经意间解决了这个问题,接下来描述一下这个问题: 问题: 最近公司给人家做二次开发,是C/S结构的,我在做Winform时发现,当我选择一个项目发布时, ...

  8. Web前端学习笔记1

    Day1. 1.Windows常用快捷键. 快捷键 功能 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切(复制和剪切后都可以粘贴) ctrl+a 全选 ctrl+s 保存 ctrl+tab ...

  9. ActiveMQ(5.10.0) - Building a custom security plug-in

    If none of any built-in security mechanisms works for you, you can always build your own. Though the ...

  10. Ehcache(2.9.x) - API Developer Guide, Cache Extensions

    About Cache Extensions Cache extensions are a general-purpose mechanism to allow generic extensions ...