【经验分享】STM32CubeMX—串口空闲中断+DMA接收
STM32CubeMX—串口空闲中断+DMA接收1)、串口一配置。2)、开启中断模式3)、生成工程代在stm32g0xx_it.c中添
[*]<p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">uint8_t recv_end_flag=0;</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">void USART1_IRQHandler(void)
[*]{
[*]/* USER CODE BEGIN USART1_IRQn 0 */
[*] recv_end_flag = 1;
[*] __HAL_UART_CLEAR_IDLEFLAG(&huart1);
[*]/* USER CODE END USART1_IRQn 0 */
[*]HAL_UART_IRQHandler(&huart1);
[*]/* USER CODE BEGIN USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">/* USER CODE END USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">}</font></font></font></p>
复制代码
在main.c中加上
[*]<p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">#include"stm32g0xx_it.h"</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">extern uint8_t recv_end_flag;</font></font></font></p>
[*]<p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">MX_GPIO_Init();
[*]MX_DMA_Init();
[*]MX_ADC1_Init();
[*]MX_USART1_UART_Init();
[*]/* USER CODE BEGIN 2 */
[*] __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
[*] HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
[*]/* USER CODE END 2 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">/* Infinite loop */
[*]/* USER CODE BEGIN WHILE */
[*]while (1)
[*]{</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
[*] HAL_Delay(200);
[*] HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_Delay(200);
[*] if(recv_end_flag ==1){
[*]
[*] }
[*] /* USER CODE END WHILE */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* USER CODE BEGIN 3 */
[*]}
[*]/* USER CODE END 3 */
[*]}</font></font></font></p>
复制代码
用串口+dma怎么实现? 使用dma接受串口数据,怎样清空串口buffer 能够实现串口接收数据直接存储到Flash中吗 如何通过DMA来接收串口数据 在stm32cubemx中该怎么配置dma模式 stm32的串口dma缓冲区是先进先出吗 STM32为什么不能实现485和DMA的数据收发? stm32 串口dma最多发送多少个 虚拟串口可以实现DMA吗? stm32 串口 能用dma同时收发吗
页:
[1]