
STM32G0b1 USB device cdc显示设备描述符请求失败
STM32CUBEMX最新版本6.14.1出现BUG
请问 cubemx 有计划支持生成基于 ATfE 编译器的 cmake 项目吗
基于NUCLEO-WL55JC1开发板当中的CLASSA节点实现FSK调制的转变
设置RDP等级为2的同时,有什么办法可以确保后续还能够烧录程序
工程移植都有哪些需要注意的地方?
关于使用cubemx配置stm32g473re的opamp工作模式:Programmable gain amplifier mode with external filtering
STM32会存在单个IO口坏掉的情况吗?
STM32IDE如何设定代码到ITCM中运行。
STM32H7R7 CubeMX无配置问题
不过,你确认下是否同时开启了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的优先级分别是多少?