硬汉嵌入式论坛

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

LOCK和UNLOCK,我晕了!明白的大神帮忙看下

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2021-9-23 13:50:24 | 显示全部楼层 |阅读模式
1.png

刚开始学习UART这部分内容,我的串口怎么也不能接收数据,只好把函数梳理一遍看哪里问题,对HAL库函数发现许多不解的地方。
如上图所示:
   在HAL_UART_Init()函数中,
               1、huart->gState == HAL_UART_STATE_RESET时,调用HAL_UART_MspInit(),初始化GPIO、RCC、NVIC等底层。
  这里的HAL_UNLOCKED是关闭锁机制,分配锁起来的资源进行初始化,不知这个锁起来的资源这里指的是GPIO、RCC、NVIC或是UART?个人感觉似乎是GPIO、RCC、NVIC,
                      但是LOCK是在哪里呢?
               2、调用UART_SetConfig(huart),初始化UART。
                       这里用 huart->gState = HAL_UART_STATE_BUSY;来标识资源状态,说明huart正在进行初始化进程.
               3、调用UART_CheckIdleState(huart),进行初始化后UART空闲状态确认。
                         这里调用UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)来确认TE后,TX中断应答的状态,在这里只有UNLOCK
                         没有LOCK。
                         个人认知,对资源的进程操作,要先开启锁机制,即LOCK独占后,再操作,然后再关闭锁机制,即UNLOCK释放后,资源共享。
      可是看这个初始化函数对UART的初始化进程,似乎没有LOCK,只有UNLOCK呢?
      为什么这样?
      请懂的大神帮忙解惑!!!!               
回复

使用道具 举报

17

主题

29

回帖

85

积分

初级会员

积分
85
发表于 2021-9-23 20:56:21 | 显示全部楼层
UNLOCK 是 解锁吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2021-9-24 09:12:38 | 显示全部楼层
这个是HAL库里面最神奇的地方。

HAL库里面的锁函数__HAL_LOCK和__HAL_UNLOCK真是神奇的存在,知道在哪里开始的,却不知道在哪里就结束了
http://www.armbbs.cn/forum.php?m ... 8807&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

1269

回帖

1278

积分

至尊会员

积分
1278
发表于 2021-9-24 11:09:42 | 显示全部楼层
硬汉大哥,这个机制用在RTX5的实时操作系统下面,还有神奇的BUG吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2021-9-25 09:07:44 | 显示全部楼层
morning_enr6U 发表于 2021-9-24 11:09
硬汉大哥,这个机制用在RTX5的实时操作系统下面,还有神奇的BUG吗?

如果多任务下使用,可以借用OS保护机制

如果单任务下使用,什么都不用管。
回复

使用道具 举报

3

主题

1269

回帖

1278

积分

至尊会员

积分
1278
发表于 2021-9-25 21:30:51 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 20:22 , Processed in 0.267952 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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