硬汉嵌入式论坛

 找回密码
 立即注册
查看: 454|回复: 8
收起左侧

[有问必答] ADC完成的回调函数中调用HAL_Delay(1) 造成卡死,怎么回事?

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-11-10 15:36:31 | 显示全部楼层 |阅读模式
使用cubemx生成的项目。

在HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)() 函数中调用了 HAL_Delay(1). 就卡死了。
HAL定时器使用的是独立定时器tim11,而且优先级已经设定为1. 比其他优先级都高了。


咋回事呢?没想明白啊。


回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-11-10 15:42:33 | 显示全部楼层
实在不行用DWT延时吧
回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2023-11-10 16:27:45 | 显示全部楼层
大概是HAL_Delay也是靠中断实现,并且优先级比adc低???

中断回调也是中断里面处理的正式点的程序都不应该在里面延时,要最小的时间处理完成退出。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2023-11-13 08:32:52 | 显示全部楼层
本帖最后由 caicaptain2 于 2023-11-13 08:50 编辑
cctv180 发表于 2023-11-10 16:27
大概是HAL_Delay也是靠中断实现,并且优先级比adc低???

中断回调也是中断里面处理的正式点的程序都不 ...

已经考虑到这个问题了。 再次在代码中全局搜索,发现了问题所在。 这个芯片是G4系列,所以有定时器17.

本来已经在hal的config文件中,把hal的定时器中断等级从15设定为1了。也确认了HAL_Init()设定了hal定时器的中断等级为1了。
Snipaste_2023-11-13_08-44-29.png


可是,hal的定时器17的全局中断 和 定时器1的某些功能共用了中断,导致cubemx生产的代码,在tim1的相关函数中,重设了tim17和tim1的共用中断等级为15(最低)。因此踩坑。
Snipaste_2023-11-13_08-45-14.png





回复

使用道具 举报

3

主题

122

回帖

131

积分

初级会员

积分
131
发表于 2023-11-13 08:52:38 | 显示全部楼层
hal库的中断处理埋了不少坑,比如串口中断啥的,把简单的事搞复杂了,我后面中断处理这块都改成LL库或者直接操作寄存器了
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-11-13 09:12:16 | 显示全部楼层
caicaptain2 发表于 2023-11-13 08:32
已经考虑到这个问题了。 再次在代码中全局搜索,发现了问题所在。 这个芯片是G4系列,所以有定时器17.

...

看一下中断向量有没有定义好,https://www.armbbs.cn/forum.php? ... d=110178&extra=
回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2023-11-13 09:35:28 | 显示全部楼层
楼主可以考虑一下perf_counter哦,不依赖中断来工作。RTE点点就有的东东。

【喂到嘴边了的模块】超级嵌入式系统“性能/时间”工具箱
https://mp.weixin.qq.com/s?__biz ... 9952704301744128#rd
回复

使用道具 举报

3

主题

122

回帖

131

积分

初级会员

积分
131
发表于 2023-11-13 09:43:36 | 显示全部楼层
hal库的中断处理有点问题,把简单的事情搞复杂了,比如串口中断啥的,我现在的办法是中断处理尽量用LL库或者直接操作寄存器
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-13 10:44:26 | 显示全部楼层
会不会是ADC进中断周期小于1ms,再加上1ms的延时,就一直在中断出不来了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 19:55 , Processed in 0.183429 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表