基于麒麟座继续串口--DMA可以顺手开启-它是ADD不影响
D:\GKOSON_BACK_GARDEN\ONENET\10086\STM32F103RET6
这个是MX做的麒麟座的工程
现在做成了空闲中断+TXRX的经典!---锁定空闲中断BUG
IAP是TOUCH的板子工程
现在做一个新的D:\GKOSON_BACK_GARDEN\ONENET\10086\STM32F103RET6
计划是空闲中断+DMA
直接全部文件夹拷贝
MX静静增加一个DMA 编译是可以直接OK的
对比看看
何时做IT??
上面就是区别!
目前工程 可以跑完全部流程 下载OTA完成
所以。。。
DMA可以顺手开 现在发现它没有影响!!!
开始修改
uint8_t GK_usart_init(GK_USARTBASE_TYPE *myuart,uint8_t usartid,uint8_t * buf)
{switch(usartid)//绑定关系{case 2:myuart->huart=&huart2;break;case 3:myuart->huart=&huart3;break;default :return 0; }myuart->rxBuf=buf;
#if (USEDMA)HAL_UART_Receive_DMA(myuart->huart, myuart->rxBuf, 2048);//开启DMA接收放到BUF 所以rxBuf没有必要放在外面
#else HAL_UART_Receive_IT(myuart->huart, &myuart->one, 1);//开启中断接收 1个1个的接收// 对应 下文
#endif__HAL_UART_ENABLE_IT(myuart->huart,UART_IT_IDLE);//开启空闲中断__HAL_UART_CLEAR_IDLEFLAG(myuart->huart);return 1;
}
这里很好理解 之前是一个一个 现在是一起的
#if (USEDMA)
void GK_UART_RxIdleCallback(GK_USARTBASE_TYPE *myuart)
{uint32_t temp;if((__HAL_UART_GET_FLAG(myuart->huart,UART_FLAG_IDLE))){ __HAL_UART_CLEAR_IDLEFLAG(myuart->huart);HAL_UART_DMAStop(myuart->huart);temp = myuart->huart->hdmarx->Instance->CNDTR;myuart->rx_len = 2048 - temp; myuart->received2idle=1;//拉起HAL_UART_Receive_DMA(myuart->huart, myuart->rxBuf, 2048);//再次启动DMA接收啦 所以我DMA不是循环模式而是普通模式}}
#else
//需要自己放在IT
void GK_UART_RxIdleCallback(GK_USARTBASE_TYPE *myuart)
{if(__HAL_UART_GET_FLAG(myuart->huart,UART_FLAG_IDLE)){__HAL_UART_CLEAR_IDLEFLAG(myuart->huart);if(flag==0)myuart->received2idle=1;else{printf("#######COM1####\r\n");if(myuart->rx_len >1024)myuart->received2idle=1;}}
}
这里是空闲中断来的时候的处理 就是len的处理有点不太同 最开始是:
void UsartReceive_IDLE(UART_HandleTypeDef *huart)
{
uint32_t temp;
if(huart->Instance==USART1)
{
if((__HAL_UART_GET_FLAG(huart,UART_FLAG_IDLE) != RESET))
{
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
HAL_UART_DMAStop(&huart1);
temp = huart1.hdmarx->Instance->CNDTR;
UsartType1.rx_len = RECEIVELEN - temp;
UsartType1.receive_flag=1;//拉起
HAL_UART_Receive_DMA(&huart1,UsartType1.usartDMA_rxBuf,RECEIVELEN);//再次启动DMA接收啦 所以我DMA不是循环模式而是普通模式
}
}
此时别的不用修改 直接跑工程 看到8266init是可以的
到了OTA环节不行 空闲中断17个字节就来了 问题更大!!!不适合大数据
基于麒麟座继续串口--DMA可以顺手开启-它是ADD不影响相关推荐
- 第九章 AT32F403A基于V2库串口 dma接收不定长数据
目录 概述 硬件 DMA 软件 流程 初始化 初始化代码: 中断服务函数: DMA1通道5设置函数:(重新使能通道) DMA1通道4发送函数:(设置dma长度和内存地址) 测试 最后 概述 本文主要是 ...
- STM32 串口DMA接收 Openmv / K210 整数、小数字符串数据 (基于HAL库)
目录 前言 一.工程配置 二.串口DMA部分代码 1.源文件UART_DMA.c 2.头文件UART_DMA.h 3.stm32f1xx_it.c的修改 4.串口收发DMA测试 三.字符串数字提取代码 ...
- 基于STM32F407标准库串口DMA+空闲中断
核心板:STM32F407 实验目的:通过DMA接收串口发来的数据,并且利用串口空闲中断在将这些数据发送至串口助手. 在通常我们使用串口接收数据时,会使能串口接收中断,并在每次接收到数据后会进入中断将 ...
- [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息
系列文章目录 第一节 stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32 ...
- 基于STM32的TFDU4101红外通信IRDA+串口DMA方式
最近项目开发要求用到近距离红外通信,需要实现两个红外设备的数据传输.于是开发完成后,简单对过程进行一个记录. 一.关于IRDA红外串口通信 IrDA是红外数据组织(Infrared Data Asso ...
- STM32 进阶教程 15 - 串口DMA收发
前言 串口操作相信大家一定很熟悉,如果你已经会串口的收发数据,并可以灵活使用轮询及中断方式对串口进行数据收发,那么恭喜你,学完本节内容后,也将可以学会串口的更高级操作方式,DMA方式,DMA操作串口可 ...
- 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...
- STM32H7xx 串口DMA发送接收(LL库)
文章目录 1 前言 2 STM32H7实现 2.1 关键步骤 2.2 注意事项 3 代码仓库 1 前言 关于串口DMA收发实现,不同CPU其套路都是类似的,不同之处在于寄存器配置.依赖BSP库等差 ...
- STM32采用串口DMA方式实现发送数据
文章目录 一.实验工具 二.DMA介绍 三.配置工程 1.新建工程 2.引脚配置 3.设置RCC 4.设置串口 5.DMA设置 6.时钟源设置 7.项目文件设置 8.创建代码 四.Keil中修改代码 ...
最新文章
- php 文件迭代对象,通过PHP中的stdClass对象进行迭代
- 树莓派slam_SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...
- 字符串转json对象的各种方法
- 信息安全风险评估实施
- centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5
- ICLR2021 Oral |9行代码提高少样本学习泛化能力
- 广东鸿图:搭建业务报表,摆脱人工计数,工作效率提升150%
- DQN 中的梯度 clip
- 【一分钟知识】决策树-ID3,C4.5,CART
- 遗传算法详解及代码实现
- 前端中LED字体的实现
- 计算机画图星星怎么画,电脑画图工具 奇奕画王使用教程(附序列号)
- SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口
- 用Python3为您随机产生一个密码,是不是很高级嘞?
- SV 接口(interface)
- Java 一个数字、字母、汉字各占几个字节
- R 填充数据集中的缺失值
- Android-Application被回收引发空指针异常分析(消灭全局变量)
- 笔记本120赫兹输出html,120Hz显示器vs.60Hz显示器盲测
- 用java实现计算器
热门文章
- QQ群、讨论组上传文件,由于网络原因上传失败?
- Flyway 报错:Detected applied migration not resolved locally:2和执行脚本错误
- JAVA 实现《坦克大战》游戏|CSDN创作打卡
- 2018秋北京松松兄弟线下聚会干货分享
- Debian修改DNS
- html svg折线带圆角,SVG / d3.js上的矩形的一个角的圆角(svg / d3.js rounded corner
- python画布删除图形_Matplotlib在savefig之后从画布中清除旧图形
- 2021“设计+”珠宝首饰创新设计展开幕
- Shapely的安装
- 光线追踪学习:GPU端光线追踪学习