初级会员

- 积分
- 132
- 金钱
- 132
- 注册时间
- 2015-10-8
- 在线时间
- 18 小时
|
1金钱
刚买了原子哥767的旗舰开发板,在学习UART这部分内容,有点疑惑请论坛大神帮忙解释下:
在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呢?
为什么这样?
请懂的大神帮忙解惑!!!!
|
|