STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
STM32F103VCT6通过串口1烧录程序问题
串口DMA收发出现ORE错误
关于外部事件(EXTI0)触发SPI读取数据
STM32F429突然死机
stm32u575 gpdma burst length=1 配置其他数值不工作
F103的IIC支持高速400K频率吗?
STM32H725S没有硬件双缓冲吗?
为什么用cubemax生成f103c8t6的freertos在编译时会报错
CUBEIDE打开一个工程,怎么改变主控芯片的同系列型号?
微信公众号
手机版
肯定有啊,空闲接收又不是什么高级功能,DMA 空闲中断不是 DMA 的中断,是串口的中断,楼上已经把函数贴出来了,就是那个。
如果接收的时钟偏离慢点,idle帧后面紧跟着一个字符的话,这样的条件会接收不到空闲帧。
首选感谢热心转接的回复。
我用的是:HAL_UARTEx_ReceiveToIdle_DMA(&huart2, rx_data, 10);启动
回调是这个函数:
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { printf("%s\r\n",rx_data); if (huart->Instance == USART2) { LED_ON; // 处理接收到的数据 if ( (Size > 2) && (Size <= 10) ) { HAL_UART_Transmit(&huart2, rx_data, Size ,0xFF); rx_Recieved = 1; } HAL_UART_DMAStop(huart); } LED_OFF; }
采用同一端口收发,收到后直接原样返回。手动发送,单次一个整数,不大于5位数。
总是不进中断。
STM32f103芯片的UART肯定支持空闲事件及中断;
目前你调用的API函数没有啥问题,你确认下调用前是否使能了空闲中断:
__HAL_UART_CLEAR_IDLEFLAG(huart);
ATOMIC_SET_BIT(UartHandle.Instance->CR1, USART_CR1_IDLEIE);
另外,你现在总不进中断,确认下是否开启了相关UART的中断功能,
使用CubeMx的话,做下勾选即可。借助调试不难很快找到原因的。