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不影响相关推荐

  1. 第九章 AT32F403A基于V2库串口 dma接收不定长数据

    目录 概述 硬件 DMA 软件 流程 初始化 初始化代码: 中断服务函数: DMA1通道5设置函数:(重新使能通道) DMA1通道4发送函数:(设置dma长度和内存地址) 测试 最后 概述 本文主要是 ...

  2. STM32 串口DMA接收 Openmv / K210 整数、小数字符串数据 (基于HAL库)

    目录 前言 一.工程配置 二.串口DMA部分代码 1.源文件UART_DMA.c 2.头文件UART_DMA.h 3.stm32f1xx_it.c的修改 4.串口收发DMA测试 三.字符串数字提取代码 ...

  3. 基于STM32F407标准库串口DMA+空闲中断

    核心板:STM32F407 实验目的:通过DMA接收串口发来的数据,并且利用串口空闲中断在将这些数据发送至串口助手. 在通常我们使用串口接收数据时,会使能串口接收中断,并在每次接收到数据后会进入中断将 ...

  4. [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息

    系列文章目录 第一节 stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32 ...

  5. 基于STM32的TFDU4101红外通信IRDA+串口DMA方式

    最近项目开发要求用到近距离红外通信,需要实现两个红外设备的数据传输.于是开发完成后,简单对过程进行一个记录. 一.关于IRDA红外串口通信 IrDA是红外数据组织(Infrared Data Asso ...

  6. STM32 进阶教程 15 - 串口DMA收发

    前言 串口操作相信大家一定很熟悉,如果你已经会串口的收发数据,并可以灵活使用轮询及中断方式对串口进行数据收发,那么恭喜你,学完本节内容后,也将可以学会串口的更高级操作方式,DMA方式,DMA操作串口可 ...

  7. 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  8. STM32H7xx 串口DMA发送接收(LL库)

    文章目录 1 前言 2 STM32H7实现 2.1 关键步骤 2.2 注意事项 3 代码仓库 1 前言   关于串口DMA收发实现,不同CPU其套路都是类似的,不同之处在于寄存器配置.依赖BSP库等差 ...

  9. STM32采用串口DMA方式实现发送数据

    文章目录 一.实验工具 二.DMA介绍 三.配置工程 1.新建工程 2.引脚配置 3.设置RCC 4.设置串口 5.DMA设置 6.时钟源设置 7.项目文件设置 8.创建代码 四.Keil中修改代码 ...

最新文章

  1. php 文件迭代对象,通过PHP中的stdClass对象进行迭代
  2. 树莓派slam_SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...
  3. 字符串转json对象的各种方法
  4. 信息安全风险评估实施
  5. centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5
  6. ICLR2021 Oral |9行代码提高少样本学习泛化能力
  7. 广东鸿图:搭建业务报表,摆脱人工计数,工作效率提升150%
  8. DQN 中的梯度 clip
  9. 【一分钟知识】决策树-ID3,C4.5,CART
  10. 遗传算法详解及代码实现
  11. 前端中LED字体的实现
  12. 计算机画图星星怎么画,电脑画图工具 奇奕画王使用教程(附序列号)
  13. SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口
  14. 用Python3为您随机产生一个密码,是不是很高级嘞?
  15. SV 接口(interface)
  16. Java 一个数字、字母、汉字各占几个字节
  17. R 填充数据集中的缺失值
  18. Android-Application被回收引发空指针异常分析(消灭全局变量)
  19. 笔记本120赫兹输出html,120Hz显示器vs.60Hz显示器盲测
  20. 用java实现计算器

热门文章

  1. QQ群、讨论组上传文件,由于网络原因上传失败?
  2. Flyway 报错:Detected applied migration not resolved locally:2和执行脚本错误
  3. JAVA 实现《坦克大战》游戏|CSDN创作打卡
  4. 2018秋北京松松兄弟线下聚会干货分享
  5. Debian修改DNS
  6. html svg折线带圆角,SVG / d3.js上的矩形的一个角的圆角(svg / d3.js rounded corner
  7. python画布删除图形_Matplotlib在savefig之后从画布中清除旧图形
  8. 2021“设计+”珠宝首饰创新设计展开幕
  9. Shapely的安装
  10. 光线追踪学习:GPU端光线追踪学习