/* USER CODE BEGIN PV */uint8_t receiveData[2];/* USER CODE END PV */
复制回调函数到main.c文件中,重新定义回调函数
/* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 */voidHAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){HAL_UART_Transmit_IT(&huart1, receiveData,2);GPIO_PinState state = GPIO_PIN_SET;if(receiveData[1]=='1'){state = GPIO_PIN_RESET;if(receiveData[0]=='L'){HAL_GPIO_WritePin(GPIOB, LED_MCU_Pin, state);}}if(receiveData[1]=='0'){state = GPIO_PIN_SET;if(receiveData[0]=='L'){HAL_GPIO_WritePin(GPIOB, LED_MCU_Pin, state);}}HAL_UART_Receive_IT(&huart1, receiveData,2);//每次执行完回调函数内容后,要继续为下次接收开启串口接收数据}/* USER CODE END 0 */
/* USER CODE BEGIN PV */uint8_t receiveData[50];/* USER CODE END PV */
在 main 函数中,使用 HAL_UARTEx_ReceiveToIdle_DMA 函数开启不定长数据DMA接收,注意:需要关闭DMA传输过半中断,我们只需要接收完成中断,此函数是以空闲中断作为接收完成的标志,而不是接收长度,因此可以接收任意长度的数据。
/* USER CODE BEGIN 2 */HAL_UARTEx_ReceiveToIdle_DMA(&huart1, receiveData,sizeof(receiveData));//通过DMA将数据接收并存到receiveData数组中__HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);//关闭DMA传输过半中断,只需要接收完成中断。/* USER CODE END 2 */
原因
在同时使用Vetur和Volar插件的Vue2与Vue3项目中,遇到Module has no default export错误。通过在VSCode设置中将vetur.validation.script设为false,可以消除该报错,不影响实际运行。
解决办法 "vetur.validation.script": fa…
队列也是一种操作受限的线性数据结构,与栈很相似。 01定义
栈的操作受限表现为只允许在队列的一端进行元素插入操作,在队列的另一端只允许删除操作。这一特性可以总结为先进先出(First In First Out,简称FIFO)。这意味…