STM32F429突然死机
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
stm32u575 gpdma burst length=1 配置其他数值不工作
F103的IIC支持高速400K频率吗?
STM32H725S没有硬件双缓冲吗?
为什么用cubemax生成f103c8t6的freertos在编译时会报错
CUBEIDE打开一个工程,怎么改变主控芯片的同系列型号?
STM32F103 使用PA9输出PWM问题
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
DMAMUX 使用内部外设Request Event(不使用TIM12和LPTIM)
微信公众号
手机版
肯定有啊,空闲接收又不是什么高级功能,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的话,做下勾选即可。借助调试不难很快找到原因的。