![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
你好: 我的目的是使用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中断接受数据,该怎么处理呢? 谢谢 |
stm32g431rbt怎么显示汉字
原先可以不会报错,为什么更新之后在static void MX-TIM2-Init(void)出现报错?
为什么WIFI的输出触发不了G474的串口接收中断
使用CubeMX配置生成STM32G431的工程文件,请问怎么设置FLASH的bank模式呢?
你好,请问STM32G473VET的内部DAC3 DAC4 的四个通道如何映射到作为外部输出到单片机管脚
STM32CubeIDE 环境下使用DSP 加速运算,但不能下载DSP库!(芯片为STM32G474RBT6)
stm32g473vet6定时器2&5输出pwm有问题.
电机
求助一个脚本语言
STM32G431KBU3不进FDCAN中断
你说 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
[md]你要注意一点,
你现在的DMA配置在循环模式,如果定时器频繁地触发ADC的话,
也就意味着频繁产生DMA完成中断。该中断如果总是频繁产生,势必
会对任务调度有影响。这个地方要合理规划下。