0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何解决PWM使用的DMA通道与串口接收的DMA通道撞车问题

电子设计 来源:电子设计 作者:电子设计 2022-02-16 11:35 次阅读

项目做到一半,碰到个尴尬问题:PWM使用的DMA通道与串口接收的DMA通道撞车了,咋办?

考虑一下,决定放弃idle中断+dma的串口不定长数据接收方案,回到中断接收去。

中断接收函数HAL_UART_RECEIVE_IT函数是个定长接收函数,除非把接收长度设为1。由于我使用freertos系统,打断系统的时间应尽可能少,频率尽可能低。每个字节都进一次hal库的接收处理函数,进行各种判断实在是不友好,因此考虑跳过hal的串口处理部分,直接判断uart_flag_rxne标志位与uart_flag_idle标志位,存入接收缓冲。触发idle中断后认为不定长数据接收完毕,进行处理。

代码:

中断使能与初始化,不启用hal_uart_receive_it。

100059078-113575-x1.png

中断处理部分,跳过hal中断处理函数

100059078-113576-x2.png

注意:__hal_uart_clear_flag函数不能清除idle标志位,需要用古老的读取方法清空。否则会卡死在中断处理结束之后。

优点:中断处理内容尽可能简化,降低对系统内核的打断;

缺点:只适用于8位数据位,无校验位等最常规通信方式,对于更复杂参数的串口通信有待测试,省掉的hal库会不会造成运行不稳定有待于继续测试。

版权声明:本文转自CSDN,博主fox0815
遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/fox0815/article/details/106461788
审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4901

    浏览量

    209957
  • 串口
    +关注

    关注

    14

    文章

    1484

    浏览量

    74525
  • dma
    dma
    +关注

    关注

    3

    文章

    536

    浏览量

    99068
收藏 人收藏

    评论

    相关推荐

    STM32G030F ADC-DMA1通道3,串口收发-DMA1的通道1和通道2,同一个DMA的不同通道为什么会相互影响呢?

    同一个DMA的不同通道为什么会相互影响呢,关闭ADC,串口工作正常,串口波形正常。打开ADC,串口虽然也能工作,但是波形在跳动,好像是ADC
    发表于 03-26 07:01

    STM32F411 SPI能用的DMA通道,IIS不能用是为什么?

    使用STM32F411RET6在开发,使用了IIS功能,将SPI1作为IIS1使用,同时启用接收DMA,但是发现在STM32CubeMX中IIS1的DMA设置中无法设置RX,仅有TX的DMA
    发表于 03-15 06:29

    Xilinx高性能PCIe DMA控制器IP,8个DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道、高性能Continous
    的头像 发表于 02-22 11:11 312次阅读
    Xilinx高性能PCIe <b class='flag-5'>DMA</b>控制器IP,8个<b class='flag-5'>DMA</b><b class='flag-5'>通道</b>

    雅特力AT32F423 DMA使用指南

    DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道
    的头像 发表于 02-22 08:13 217次阅读
    雅特力AT32F423 <b class='flag-5'>DMA</b>使用指南

    dma通道技术的区别

    DMA(Direct Memory Access)和通道技术是计算机系统中用来优化数据传输和处理的重要技术。尽管它们都与数据传输相关,但它们在实现方法、特点和应用场景等方面存在一些重要的区别
    的头像 发表于 01-04 14:31 610次阅读

    一种高性能多通道通用DMA设计与实现

    为充分发挥异构多核DSP芯片的实时计算能力,设计并实现了一种高性能多通道的通用DMA,该DMA最大支持64个通道的数据搬运,并支持一维、二维、转置以及级联描述符等多种传输模式。芯片实测
    的头像 发表于 11-20 15:52 610次阅读
    一种高性能多<b class='flag-5'>通道</b>通用<b class='flag-5'>DMA</b>设计与实现

    CKS32F4xx系列ADC多通道DMA电压采集

    CKS32F4xx系列ADC多通道DMA电压采集
    的头像 发表于 11-06 16:53 414次阅读

    LPC5500_SDK例程:串口DMA发送+中断接收

    LPC5500_SDK例程:串口DMA发送+中断接收
    的头像 发表于 10-30 16:59 528次阅读
    LPC5500_SDK例程:<b class='flag-5'>串口</b><b class='flag-5'>DMA</b>发送+中断<b class='flag-5'>接收</b>

    AT32 MCU DMA通道的灵活配置

    AT32 MCU DMA通道的灵活配置
    的头像 发表于 10-26 17:51 463次阅读
    AT32 MCU <b class='flag-5'>DMA</b><b class='flag-5'>通道</b>的灵活配置

    STM32串口中断及DMA接收常见的几个问题

    STM32串口中断及DMA接收常见的几个问题
    的头像 发表于 10-26 16:41 2553次阅读
    STM32<b class='flag-5'>串口</b>中断及<b class='flag-5'>DMA</b><b class='flag-5'>接收</b>常见的几个问题

    SPI未及时使能DMA通道导致接收数据错误

    SPI 配置为使用 DMA 接收数据,但在 DMA 通道未使能或在传输过程中关闭 DMA通道的时
    发表于 10-20 08:08

    STM32 TIMER+DMA输出PWM异常案例的问题解析

    有人使用STM32U575的TIMER加上DMAPWM输出。具体就是利用某TIMER的一个通道的比较事件触发DMA,通过DMA修改CCR值
    的头像 发表于 09-28 09:04 4260次阅读
    STM32 TIMER+<b class='flag-5'>DMA</b>输出<b class='flag-5'>PWM</b>异常案例的问题解析

    STM32U5 ADC+DMA配置演示

    随意选择ADC1的4个通道,扫描模式,连续转换,DMA传输转换结果并令DMA工作在外设字到内存字的循环传输模式。使用CubeMx进行配置。其中DMA
    的头像 发表于 07-29 16:19 858次阅读
    STM32U5 ADC+<b class='flag-5'>DMA</b>配置演示

    衔尾法解决当无法使用空闲中断以及DMA中断时配置DMA接收串口不定长数据

    K线或者蓝牙初始化模块时调用此函数 (注意点: 在函数内使能DMA中断,但是不要使能对应串口DMA接收通道。使能对应
    发表于 06-19 09:32

    STM32采用串口DMA方式向上位机连续发送数据

    目录前言一、DMA简介1.1DMA功能框图1.1.1DMA 请求1.1.2通道1.1.3仲裁器1.2DMA数据配置 1.2.1数据传输方向:
    发表于 05-11 09:32 2次下载
    STM32采用<b class='flag-5'>串口</b><b class='flag-5'>DMA</b>方式向上位机连续发送数据