新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2023-3-26
- 在线时间
- 3 小时
|
1金钱
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
if(__HAL_UART_GET_FLAG(&huart2,UART_IT_IDLE) != RESET)
{
__HAL_UART_CLEAR_IDLEFLAG(&huart2);
HAL_UART_DMAStop(&huart2);
uint8_t len = 3 - __HAL_DMA_GET_COUNTER(huart2.hdmarx);
HAL_UART_Transmit_DMA(&huart2,data,len);
HAL_UART_Receive_DMA(&huart2,data,3);
}
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART2_UART_Init();
MX_USB_Device_Init();
MX_TIM2_Init();
MX_USART1_UART_Init();
MX_USART3_UART_Init();
/* USER CODE BEGIN 2 */
HAL_UART_Receive_DMA(&huart2,data,3);
/* USER CODE END 2 */
/* Call init function for freertos objects (in freertos.c) */
MX_FREERTOS_Init();
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
|
-
-
最佳答案
查看完整内容[请看2#楼]
STM的空闲中断在CUBEMX配置的时候不会自动帮你打开,需要你自己初始化加入进去,
MX_USART2_UART_Init();
__HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);//加入空闲中断初始化
HAL_UART_Receive_DMA(&huart2,data,3);
|