软件为keil5,头文件未找到
通过FATFS文件系统读写SD卡创建文件可以了,但加入MSC,一直显示一个没有格式化的U盘盘符,也不能格式化,这是什么问题导致的
STM32双核H7核间通信的方法
STM32F103C8T6使用CubeIDE烧录运行报硬件错误,相同代码MDK烧录却可以正常运行
MCSDK5.4.4 FOC电流闭环运行电机偶发停转问题
MCSDK6.3.1使用SIXSTEP如何才能使用电流模式呢?我在配置了电流传感器后仍然无法使用电流模式。
STM32G473VET6同时使用6个片上放大器(OPAMP)的PGA加外部偏置模式,引脚位置让差分信号走线分离,信号有无较大影响?
STM32CubeMX 使用"FW_F1 V1.8.6"生成FreeRTOS代码缺少"freertos_mpool.h"?
CMAKE生成代码后问题。
各位大佬,比方说我用STM32CubeMX配置了单片机的管脚,然后用STM32CubeIDE编写代码,代码编写一半的过程中,我发现管脚配置中要添加新的外设设置,用CudeMX添加配置后重新生成代码,怎么保证我之前在CubeIDE中自己编写的代码部分不被覆盖掉?
不过,你确认下是否同时开启了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的优先级分别是多少?