=HAL_OK){//解除忙状态(由ORE导致,清零ORE位)if(return_state==HAL_BUSY){//清除ORE错误// __HAL_UART_CLEAR_OREFLAG(&huart1);//清楚ORE标志位// huart1.RxState=HAL_UART_STATE_READY;huart1.Lock=HAL_UNLOCKED;//重新开始接收return_state=HAL_UART_Receive_IT(&huart1,(uint8_t*)&aRxBuffer,RXBUFFERSIZE);}}
__HAL_LOCK(huart); 导致中断接收函数 HAL_StatusTypeDef HAL_UART_Receive_IT 返回hal_busy; 没有正常的执行,所以串口接收中断也没有打开,再也接收不到下一个字节了。 我简单粗爆的把 __HAL_LOCK(huart);注释掉了。
但奇怪的是并没有触发串口错误中断的回调函数,通过进一步分析排查发现是由__HAL_LOCK()引起的,而串口...
< UART Rx DMA Handle parameters */ HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_UART_StateTypeDef State; /*!< UART communication state */ __IO uint32_t ErrorCode; /*!< UART Error code */}UART_HandleTypeDef; 我们发现,与标准库不同的是,该成员不仅: · 1、包含了之前标准...
HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_UART_StateTypeDef State; /*!< UART communication state */ __IO uint32_t ErrorCode; /*!< UART Error code */ }UART_HandleTypeDef; 我们发现,与标准库不同的是,该成员不仅:
1 HAL库常用名词缩写及HAL库用户应用程序文件 1.1常用名词缩写与定义 表1.首字母缩写与定义 1.2HAL和用户应用程序文件 接下来说一下HAL库的文件组成,HAL库用户应用程序文件分为两部分,一部分是HAL库驱动程序文件,另一部分是用户应用程序文件。 1.2.1 hal库驱动程序文件 ...
stm32的Hal库函数 stm32的Hal库函数,串口卡死解决方法HAL库中强制对串口进行了半双工限制,其实STM32的串口是全双工的,很多时候卡死,是因为我们做了全双工操作导致的卡死,卡死在HAL_LOCK(huart 宝宝OK2021-08-17 07:11:29 STM32HAL库概述 STM32HAL库概述本文本是我对我自己平日里使用STM32的总结,结合了网上...
< UART Tx DMA Handle parameters*/DMA_HandleTypeDef*hdmarx;/*!< UART Rx DMA Handle parameters*/HAL_LockTypeDef Lock;/*!< Locking object*/__IO HAL_UART_StateTypeDef State;/*!< UART communication state*/__IO uint32_t ErrorCode;/*!< UART Error code*/}UART_HandleTypeDef;...
return HAL_ERROR; } /* Process Locked */ __HAL_LOCK(huart); huart->pTxBuffPtr = pData; huart->TxXferSize = Size; huart->TxXferCount = Size; huart->ErrorCode = HAL_UART_ERROR_NONE; huart->gState = HAL_UART_STATE_BUSY_TX; ...
这个__HAL_LOCK 与__HAL_UNLOCK 宏在UART以DMA方式传输的时候被用到了,在库中很多的底层模块驱动...