打印
[其他ST产品]

使用DMA通道4开启串口1,开启中断之后,程序错乱

[复制链接]
292|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海滨消消|  楼主 | 2023-12-14 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler(void) { / USER CODE BEGIN DMA1_Ch4_7_DMAMUX1_OVR_IRQn 0 /

/ USER CODE END DMA1_Ch4_7_DMAMUX1_OVR_IRQn 0 / //HAL_DMA_IRQHandler(&hdma_dac1_ch1); HAL_DMA_IRQHandler(&hdma_usart1_tx); HAL_DMA_IRQHandler(&hdma_adc1); //HAL_DMA_IRQHandler(&hdma_usart1_tx);

/ USER CODE BEGIN DMA1_Ch4_7_DMAMUX1_OVR_IRQn 1 /

/ USER CODE END DMA1_Ch4_7_DMAMUX1_OVR_IRQn 1 / }

else if(uartHandle->Instance==USART1) //USART1-初始化20231211 { HAL_RCC_USART1_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE();

GPIO_InitStruct.Pin = Oxy_Tx_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(Oxy_Tx_GPIO_Port, &GPIO_InitStruct);

GPIO_InitStruct.Pin = Oxy_Rx_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(Oxy_Rx_GPIO_Port, &GPIO_InitStruct);

hdma_usart1_tx.Instance = DMA1_Channel4; //dma没有初始化-4-6空闲 hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX; hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_usart1_tx.Init.Mode = DMA_CIRCULAR; hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) { Error_Handler(); }

__HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx);

HAL_NVIC_SetPriority(USART1_IRQn, 3, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); }

void MX_USART1_UART_Init(void) //氧浓度20231208 {

huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;//20230605 //huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT;//20230601 //huart1.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;//20230601 if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) { Error_Handler(); }

}

使用特权

评论回复
沙发
cr315| | 2023-12-14 15:47 | 只看该作者
可能是中断优先级问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

241

主题

1657

帖子

2

粉丝