
SDIO读取TF卡,1bit模式正常,4bit模式无法读取
STM32MP157D-DK1与STM32MP157F-DK2重大区别和推荐选择哪块板子,想做智能家居方面的,
cudeide执行run是烧录还是只是执行呢
STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发
cubeIDE在run后出现错误
求助,移植touchgfx之后stm32不运行程序。
求助,移植touchgfx之后stm32不运行程序,keil进入debug倒是可以手动运行
stm32驱动st7735屏幕区分地图上的障碍物.
STM32CubeMX如何设置成中文界面?
STM32CubeMX在配置DCMI的腳位時,在Mode的選項中, 只有8bits, 10bits與12bits, 為何沒有14bits?
不过,你确认下是否同时开启了ADC事件的中断和DMA传输中断,若都开启了是否都有相应的中断服务程序。
如果按CubeMx创建工程来的话,相应中断都会有基本的中断服务代码和预留回调接口,至少不用担心标志位的清零这些。
我担心的就是你并没有沿用相关代码而是自行组织的,自己又只写了部分服务代码。当然,自行组织中断服务程序
是完全可以,要注意写的中断服务代码弄完整,别只处理DMA传输中断却忘却了ADC转换中断。 当然,这只是些
提醒,你自己再慢慢排查确认。
看起来你是用了注入模式,可以用HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) 回调函数。
不过要注意你是否是混合模式,如果是的话可以用 HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *AdcHandle)
试试看是否能执行。
这个官方库中有类似的例程可以参考。
为什么要在ISR里面执行while循环?
先别管这个问题,我程序对实时要求性不高,而且后续需要调用这个数组,不判断得话跑太快程序要出错。
[md]你呆在ISR里面都不出来,你让比他低优先级的任务怎么中断?比方说你的ADC有没有可能优先级比你这个低?
即便是必须要实时性,也可以做个大循环。在这里只需要设置一个标记就成了。
你的回调用错了,用HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);这是转换完成的中断
看回调函数不像是ADC的中断回调?
他应该是比较器中断了之后,触发ADC进行几次采集,采集完了再退出ISR。应该是ADC的优先级比这个低了。但这样操作其实很危险。ISR长期退不出。如果开了看门狗,分分钟歇菜。
[md]你说中断优先级这个问题其实我做的时候就考虑到了,但是为了以防万一,我刚才还是把while放大循环了试了下。不过还是卡死在while,处于busy状态,在ADC传输中断和DMA传输完成中断打得断点也没能进入
我为了省功耗。采用的比较器触发ADC_DMA采样。所以这个是比较器中断函数,在比较器里面进行ADC_DMA传输。但是传输之后DMA一直处于忙状态
[md]理解,你看一下你ADC和COMP的优先级分别是多少?