一、初始化

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. Android 高级UI设计笔记04:使用setDrawingCacheEnabled(boolean flag)提高绘图速度

    1. View组件显示的内容可以通过cache机制保存为bitmap, 使用到的API有: void setDrawingCacheEnabled(boolean flag) Bitmap getDr ...

  2. 高德地图 JavaScript API 开发系列教程(一)

    高德地图 API 提供包括 Web API 即 JavaScript API,Android API,定位API,IOS API,WP API,Win8 API等,本系列教程主要针对高德 JavaSc ...

  3. linux上传下载

    linux传下载 1.可以通过xftp连接服务器直接 拖拽 2.yum install lrzsz   通过rz/sz命令上传下载

  4. oracle 取随机数据

    --取随机数据 select dbms_random.value from dual; ); --百分比

  5. T-SQL使用JOIN执行UPDATE语句

    问题: In SQL Server, it's possible to insert into a table using a SELECT statement: INSERT INTO Table ...

  6. asp.net mvc 的几种分页Pager

    第一种 /// <summary> /// 分页Pager显示 /// </summary> /// <param name="html">&l ...

  7. Jquery 全选、反选问题解析

    最近工作中,需要使用Jquery实现复选框的全选和反选,本人虽然不是专职撸前端的,但这个小问题感觉也没什么难度,下面直接上代码: <div id="list"> < ...

  8. Git CMD - remote: Manage set of tracked repositories

    命令格式 git remote [-v | --verbose] git remote add [-t <branch>] [-m <master>] [-f] [--[no- ...

  9. C#保存上传来的图片示例代码

    保存上传图片的方法有很多,在接下来的文章中为大家详细介绍下使用C#是如何做到的,感兴趣的朋友不要错过 复制代码代码如下: [HttpPost]  public string UploadImage() ...

  10. php5.4window下连接mssql

    第一步 下载 http://www.microsoft.com/en-us/download/details.aspx?id=20098 [PHP_PDO_SQLSRV] extension=php_ ...