如何在CubeMx配置界面将DMA中断的默认使能关闭

发布者:Xiaochen520最新更新时间:2024-07-04 来源: elecfans关键字:CubeMx 手机看文章 扫描二维码
随时随地手机看文章

能不能在CubeMx配置界面将DMA中断的默认使能关闭?

这里再顺便分享一个跟CubeMx配置有关的话题。目前来看,我相信对不少人还是有帮助的!


我们在使用CubeMx对STM32芯片做初始化配置过程中,当开启某些外设的DMA功能时,CubeMx会默认开启相关DMA的中断使能。说实在,这个做法很多时候是必要的、有用的。但有时我们可能并不需要开启相关DMA中断,甚至会因为这个默认开启而给我们带来调试上的困扰。


有些人不知如何基于CubeMx配置界面来关闭这个默认的DMA中断使能。其实很简单,就在上面提到过的NVIC配置界面里,将Force DMA
channel…前的勾选项拿掉即可。见下面操作流程示意图。

图片


关键字:CubeMx 引用地址:如何在CubeMx配置界面将DMA中断的默认使能关闭

上一篇:基于ESP8266的机智云平台控制系统设计
下一篇:应用笔记 | 高精度定时器中single-shot计数模式不工作

推荐阅读最新更新时间:2026-03-24 05:32

STM32CubeMX—串口空闲中断+DMA接收
一、实验说明 实验平台:STM32F103C8T6 实验内容:使用串口一空闲中断结合DMA 完成不定长数据接收 STM32的串口接收数据的方式 1、轮询接收 所谓轮询,就是在主函数中判断接收完成的标志位。举个不太恰当例子,就比如,此时你正在考试作弊,手机藏在兜里,你的队友再给你发答案,但是你的手机静音,所以你不得不写一会题看一会手机,有的时候答案已经发来了但是你此时在假装写,没有看,导致你没能及时看到答案浪费了时间(仅仅为了举例而已。。。。)。轮询接收数据也是这样。 2、中断接收 串口接收配置为中断模式,当有数据收到时,进入到串口接收中断中读取数据。继续上面的例子(你为了不浪费时间且及时抄到答案,你把手机开了震动,消息
[单片机]
STM32<font color='red'>CubeMX</font>—串口空闲<font color='red'>中断</font>+<font color='red'>DMA</font>接收
STM32CubeMX串口空闲中断DMA实现不定长度收发数据
这里教程是选择的STM32F407。STM32F103也测试过。 1.首先选择串口,选择异步通信。 2.添加DMA 3.打开中断 4.生成代码,生成代码选择了每个外设单独使用.c/.h 5.我使用的是Keil5。打开工程,首先注释掉dma.c里的DMA接收中断,因为不需要DMA接收中断,DMA发送中断是需要的。(dma.c) void MX_DMA_Init(void) { __HAL_RCC_DMA2_CLK_ENABLE(); HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 2, 0); HAL_NVIC_En
[单片机]
STM32中DMA传输中断功能的关闭方法详解
一、为什么我们要关中断功能呢? 1.在撰写类似DMA相关串口传输程序时,我们会使用到队列指针的操作,而这个操作绝对不可以被任何行为打断,打断就寄。 2. 因此我们要在进行队列指针的数据处理时,将全局的中断全部关闭。(很快,就一瞬间开关一下) 3.举个例子: 例如在某一串口传输函数中,以下操作需原子性: ENTER_CRITICAL(); if (队列未满) { txHead = next_head; // 更新队列头 if (UART空闲) { 启动DMA发送(); // 更新txTail和isUART3Busy } } EXIT_CRITICAL(); 若此处不关闭中断,DMA完成回
[单片机]
STM32中<font color='red'>DMA</font>传输<font color='red'>中断</font>功能的关闭方法详解
STM32F103串口DMA+空闲中断+多级缓冲实现不定长接收
文本提供的代码是基于STM32CubeMX生成的HAL库的。 STM32串口接收大体分为3种方式: 1、阻塞接收---HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 2、中断接收---HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); 3、DMA接收---HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint
[单片机]
stm32之DMA中断
AD转换之DMA 1、DMA的配置 //DMA的配置 void DMA_Configuration(void) { /* 允许 DMA1 */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* DMA通道1*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr =(u32)( &(ADC1- DR)); //ADC1数据寄存器 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADCCov; //获取ADC的数组 DMA_InitStructur
[单片机]
STM32U59 SPI DMA发送未产生传输完成中断问题分析
1、前言 某客户发现修改代码后,STM32U59 SPI DMA 发送未产生传输完成中断,但修改的代码跟 SPI 以及 DMA 毫无关联。 2、调研 回退代码修改后问题消失,可以确认硬件正常。检查 SPI 发送对应的 DMA 句柄的ErrorCode,发现 HAL_DMA_ERROR_DTE(Date Transfer Error)置位。尝试修改软件,发现调整下某个全局变量初值,或屏蔽某些变量,都能解决问题。 为屏蔽 RTOS 及应用代码可能带来的影响,调整客户 SPI 和 DMA 初始化代码位置到紧跟 MCU 复位后配置时钟,初始化全局变量,并在初始化完成后立即发送一包数据,测试下来问题仍存在,说明问题和后续 RTOS 及应
[单片机]
STM32U59 SPI <font color='red'>DMA</font>发送未产生传输完成<font color='red'>中断</font>问题分析
STM32 | 串口空闲中断接收不定长数据(DMA方式)
在使用STM32的串口接收数据的时候,我们常常会使用接收中断的方式来接收数据,常用的是RXNE。这里分享另一种接收数据的方式——IDLE中断(PS:本文的例子运行在STM32F103ZET6上)。 一、IDLE中断什么时候发生? IDLE就是串口收到一帧数据后,发生的中断。什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据。 二、RXNE中断和IDLE中断的区别? 当接收到1个字节,就会产生RXNE中断,当接收到一帧数据,就会产生IDLE中断。比如给单片机一次性发送了8个字节,就会产生8次RXNE中断,1次IDLE中断。 三、IDLE中断如何配
[单片机]
STM32 | 串口空闲<font color='red'>中断</font>接收不定长数据(<font color='red'>DMA</font>方式)
STM32 HAL库 串口DMA发送完成中断
近期使用STM32驱动MAX3485进行485通信,发现STM32F103C8并不自带硬件485首发功能,需要软件上控制IO高低来驱动MAX3485进行485接收、485发送。 根据MAX3485手册可得,进行485发送时给相应引脚高电平。其余时间为低电平进行485接收。因此需要找到串口DMA发送完成的回调函数,在发送完成后将引脚拉低。 在stm32f1xx_hal_uart.c中 /** @defgroup UART_Exported_Functions_Group2 IO operation functions * @brief UART Transmit and Receive functions * @verb
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved