硬汉嵌入式论坛

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

[STM32CubeH7] 当前H7的HAL库是不支持多任务调用的,也就是不支持重入,虽然做了忙检测,但仅可用于裸机

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106744
QQ
发表于 2018-4-8 01:30:49 | 显示全部楼层 |阅读模式
使用HAL库的API函数,最好不要同一个函数多个任务里面搞。
  1. #if (USE_RTOS == 1)
  2.   #error " USE_RTOS should be 0 in the current HAL release "
  3. #else
  4.   #define __HAL_LOCK(__HANDLE__)                                           \
  5.                                 do{                                        \
  6.                                     if((__HANDLE__)->Lock == HAL_LOCKED)   \
  7.                                     {                                      \
  8.                                        return HAL_BUSY;                    \
  9.                                     }                                      \
  10.                                     else                                   \
  11.                                     {                                      \
  12.                                        (__HANDLE__)->Lock = HAL_LOCKED;    \
  13.                                     }                                      \
  14.                                   }while (0)

  15.   #define __HAL_UNLOCK(__HANDLE__)                                          \
  16.                                   do{                                       \
  17.                                       (__HANDLE__)->Lock = HAL_UNLOCKED;    \
  18.                                     }while (0)
  19. #endif /* USE_RTOS */
复制代码


回复

使用道具 举报

56

主题

904

回帖

1072

积分

至尊会员

积分
1072
发表于 2018-4-8 12:04:43 | 显示全部楼层
stm32的软件又要加班了。。。。说不准要跳槽了。
回复

使用道具 举报

7

主题

102

回帖

123

积分

初级会员

积分
123
发表于 2018-4-13 18:19:04 | 显示全部楼层
本来就是这样吧,ST的HAL全部是一个尿性,F4也是这样的。早就对ST无语了,既然要搞这种高级库,OS支持是必须的。要不自己弄一套OS接口,然后给客户适配。要不直接用CMSIS-RTOS接口就是了。都搞那么多年都没搞上去。
回复

使用道具 举报

23

主题

78

回帖

147

积分

初级会员

积分
147
发表于 2020-12-30 22:19:29 | 显示全部楼层
STM32f4标准库支持重入吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106744
QQ
 楼主| 发表于 2020-12-31 09:58:30 | 显示全部楼层
手牵手看夕阳 发表于 2020-12-30 22:19
STM32f4标准库支持重入吗?

一些函数是支持的,一些是不支持的。
回复

使用道具 举报

23

主题

78

回帖

147

积分

初级会员

积分
147
发表于 2020-12-31 10:36:47 | 显示全部楼层
eric2013 发表于 2020-12-31 09:58
一些函数是支持的,一些是不支持的。

支不支持重入,是看函数中又没用到全局变量吗?
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
发表于 2020-12-31 18:29:22 | 显示全部楼层
已经全系列使用LL库,虽然不全,但是比HAL库坑少点,当然有些还是要自己动手编写的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106744
QQ
 楼主| 发表于 2021-1-1 10:37:00 | 显示全部楼层
rog 发表于 2020-12-31 18:29
已经全系列使用LL库,虽然不全,但是比HAL库坑少点,当然有些还是要自己动手编写的

HAL库里面好些外设也是调用的LL库,像USB,SDMMC等
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106744
QQ
 楼主| 发表于 2021-1-1 10:38:15 | 显示全部楼层
手牵手看夕阳 发表于 2020-12-31 10:36
支不支持重入,是看函数中又没用到全局变量吗?

用了全局变量,你做好互斥也可以重入的。

还有就是函数的形参,也要注意。
回复

使用道具 举报

12

主题

141

回帖

177

积分

初级会员

积分
177
发表于 2021-2-9 08:32:29 | 显示全部楼层
eric2013 发表于 2021-1-1 10:38
用了全局变量,你做好互斥也可以重入的。

还有就是函数的形参,也要注意。

函数的形参对可重入有什么影响
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106744
QQ
 楼主| 发表于 2021-2-9 08:51:39 | 显示全部楼层
gnail092 发表于 2021-2-9 08:32
函数的形参对可重入有什么影响

可重入性,主要就是形参和全局变量在影响。
回复

使用道具 举报

12

主题

141

回帖

177

积分

初级会员

积分
177
发表于 2021-2-9 09:07:49 | 显示全部楼层
eric2013 发表于 2021-2-9 08:51
可重入性,主要就是形参和全局变量在影响。

除非这个形参是个指针,指向的是一个全局变量,不然应该不会影响吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 15:11 , Processed in 0.240317 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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