if(HAL_DMA_Init(&hdma_memtomem_dma2_stream7) !=HAL_OK) { Error_Handler(); } 其实不难发现,HAL_DMA_Init这个函数的类型返回的是HAL_StatusTypeDef这个枚举的内容,具体如下: /** * @brief HAL Status structures definition*/typedefenum{ HAL_OK=0x00U, HAL_ERROR=0x01U, HAL_BUSY=0x02U, HAL...
不过自动生成的代码,调用HAL_I2C_XXX的API工作不正常,返回错误代码为I2C_BUSY 使用STM32的I2C接口使用时需要注意很多细节,不过HAL库中官方已经为用户根据这些细节做了处理,可以直接使用。不过这个I2C代码并不稳定,有些板子可以用,另一些则出错. 出错现象为调用HAL_I2C的API时,返回I2C_BUSY 查看寄存器 BUSY位被置位 ...
用stm32cubeMX生成的初始化代码。 UART DMA发送时一直返回HAL_BUSY。 这个问题感觉是HAL库的问题,在cube上开了DMA中断没有开UART的全局中断,一直返回这个,仔细查看是UART被阻塞了,重新初始化然后继续调用DMA发送的函数就可以,但这样并没有从根本上解决问题,后来发现DMA中断和UART中断同时打开就没问题了,但这样其实也...
这么做的原因个人理解是gState 这个成员在某处被改变,而在HAL_UART_Transmit_DMA函数中有一个重要的判断: 由于gState被改变,所以此函数没有执行发送操作,而是直接返回HAL_BUSY。 tips: 在串口发送大量数据的时候,尽量在数据之间延时一段时间,防止数据堵塞等造成数据传输错误。 2. 定时器编码器与PWM输出(输出比较)...
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_BUSY错误,而使用标准的HAL_UART_Transmit函数却能正常工作。经过深入排查,发现问题是由于串口初始化阶段未开启DMA时钟导致的配置失败。CubeMX自动生成的代码中,初始化函数的执行顺序是随机的,将DMA初始化函数安排在串口初始化函数之前,可以解决这个问题。正确的代码执行流程如下:
STM32HAL库I2C⼯作出错返回I2C_BUSY 使⽤stm32cubemx⽣成硬件I2C的代码 不过⾃动⽣成的代码,调⽤HAL_I2C_XXX的API⼯作不正常,返回错误代码为I2C_BUSY 使⽤STM32的I2C接⼝使⽤时需要注意很多细节,不过HAL库中官⽅已经为⽤户根据这些细节做了处理,可以直接使⽤。不过这个I2C代码并不稳定,...
=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*)&aRx...
· HAL_UART_Receive_IT 该函数请求UART句柄huart,接收数据缓存区pData,以及期望接收的数据个数size。 进入到该函数中,首先会确保huart处于空闲状态,否则返回HAL_BUSY,同时校验参数pData和size的合法性,视情况返回HAL_ERROR /* Check that a Rx process is not already ongoing */if(huart->RxState==HAL_UAR...
* @retval HAL_Status 返回值 HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT * */ HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) // 串口接收中断回调函数 __weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) ...