
你好: 我的目的是使用G474的HRTIM 做平均电流控制电源环路: 想法是:使用HRTIM A 、B做移相控制,HRTIM A、B设置comp1和comp2做占空比控制,频率20KHz,设置HRTIM A设置comp3作为ADC触发源;ADC启动DMA,并使用DMA中断来处理ADC数据和环2路计算。 问题:当开启HRTIMA 的中断和DMA ADC中断后,DMA ADC中断一直被触发,系统其他的部分一直得不到运行,优先级也对该过,任然是一样的一直在DMA ADC中断。 现象1:关闭DMA ADC中断后,程序正常运行; 请教一下,如果使用HRTIM A触发ADC,使用ADC的DMA中断接受数据,该怎么处理呢? 谢谢 |
motor profiler参数识别卡在7%是什么原因啊,电机只响不动,手动旋转有阻力,顿感
STEVAL-PTOOL4A开发板资料求助
STSPIN32G4的AN5432文档资料去哪里找?
开发逆变器进行STM32学习,路径如何规划?
STM32G474如何实现Buck变换器的COT控制模式
关于使用cubemx配置stm32g473re的opamp工作模式:Programmable gain amplifier mode with external filtering
++和--运算时数据在正数时计算是正确的,负数时有时候会溜掉计数。
stm32G4的SPI通信问题
关于STM32G474 双BANK的测试问题
STM32G474CBT6上电瞬间用示波器测得io口产生较大电压(浪涌电压)
[md]你要注意一点,
你现在的DMA配置在循环模式,如果定时器频繁地触发ADC的话,
也就意味着频繁产生DMA完成中断。该中断如果总是频繁产生,势必
会对任务调度有影响。这个地方要合理规划下。
你说 DMA ADC中断一直被触发,到底是什么中断呢?ADC的EOC中断还是DMA传输中断,它又分半传输和传输完成中断。
你现在想通过TIMER触发ADC,使用DMA搬运数据。这时,一般是没必要开启ADC的EOC中断的。
如果使用CubeMx配置及Cube库API的话,DMA的半传输和传输完成中断都是默认开启了的,我们
基于传输完成或半完成中断处理数据即可。如果说你的TIMER触发是没完没了的循环的话,利用半传输
完成中断来处理接收数据是个不错的选择。
如基于库提供的回调函数来写代码的话,只需添加用户处理代码,标志位都交给库代码完成了。
如果全部是自己编写的代码,记得做中断标志的清零处理。
你好!是HRIM 触发ADC ,然后启动DMA完成中断,来处理数据。使用的是HAL的接口;ADC中关联DMA channel 1:
hdma_adc1.Instance = DMA1_Channel1; hdma_adc1.Init.Request = DMA_REQUEST_ADC1; hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; hdma_adc1.Init.MemInc = DMA_MINC_ENABLE; hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_adc1.Init.Mode = DMA_CIRCULAR; hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;
在DMA.C中配置DMA1_Channel1中断:
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 3, 0); HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
在void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)中处理数据。
在主任务中开启ADC MDA:
ADC1_StartDMA();
运行程序,DMA中断就会导致UCOS系统的是任务不发正常调度了。UCOS的系统时钟用的SysTick的优先级为:
define TICK_INT_PRIORITY 2U
非常感谢!在您的帮助下问题已经。