硬汉嵌入式论坛

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

[STM32CubeProg] Cubemx里面为什么设定HAL的定时器中断优先级是0?最高级

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2019-12-27 11:04:09 | 显示全部楼层 |阅读模式
使用cube生成的项目可以看到,HAL用的定时器中断总是最高级别,就是0.
#define  TICK_INT_PRIORITY            ((uint32_t)0U)   /*!< tick interrupt priority */      

为什么要这么高级别? RTOS的定时器中断级别一般都是最低记得0x0f啊

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-12-27 11:24:06 | 显示全部楼层
可以根据需要,自行修改的。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2019-12-27 11:58:19 | 显示全部楼层
eric2013 发表于 2019-12-27 11:24
可以根据需要,自行修改的。

不知道缘由,改低了不知道会有什么影响啊?  HAL把自己的级别搞那么高,就是为了延时精准?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-12-27 14:01:43 | 显示全部楼层
caicaptain2 发表于 2019-12-27 11:58
不知道缘由,改低了不知道会有什么影响啊?  HAL把自己的级别搞那么高,就是为了延时精准?

最主要的原因是HAL库的有些API在中断里面调用需要用到这个滴答定时器提供的时基
回复

使用道具 举报

3

主题

83

回帖

92

积分

初级会员

积分
92
发表于 2019-12-28 05:55:13 | 显示全部楼层
HAL_Delay(). this function implements a delay (expressed in milliseconds) using the
HAL_Delay(). this function implements a delay (expressed in milliseconds) using the
SysTick timer.
Care must be taken when using HAL_Delay() since this function provides an accurate
delay (expressed in milliseconds) based on a variable incremented in SysTick ISR.
This means that if HAL_Delay() is called from a peripheral ISR, then the SysTick
interrupt must have highest priority (numerically lower) than the peripheral interrupt,
otherwise the caller ISR will be blocked.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-12-28 10:25:10 | 显示全部楼层
stevenq 发表于 2019-12-28 05:55
HAL_Delay(). this function implements a delay (expressed in milliseconds) using the
HAL_Delay(). th ...

对,就是这个,比较重要。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2020-1-9 09:39:31 | 显示全部楼层
stevenq 发表于 2019-12-28 05:55
HAL_Delay(). this function implements a delay (expressed in milliseconds) using the
HAL_Delay(). th ...

哦,外设的中断函数中如果用到了HAL_Delay,同时HAL_Delay的优先级又比较低,外设中断函数就可能死等HAL_Delay了。

中断函数自己写就好多了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 16:36 , Processed in 0.194481 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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