在 STM32CubeIDE 中正确设置 STM32F103C8T6 的 Flash 容量
STM32H523CEU6的Pin41和Pin42能否作为USART6使用?
咨询下,新项目打算用STM32F103的USB与工控机或PAD进行通讯,问题如下
STM32F103 串口下载ST Flash Loader Demo
请问一下STM32F103C8T6的Hardwar NSS Output ENABLE后cs持续拉低是为什么
Ragdoll Archers: Physics-Based Bow & Arrow Chaos
foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
STM32G0B1
F103的IIC支持高速400K频率吗?
STM32F103RCT6断电以后,ADC会漏电
微信公众号
手机版
肯定有啊,空闲接收又不是什么高级功能,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的话,做下勾选即可。借助调试不难很快找到原因的。
[md]问题找到了,103确实没有
“HAL_UARTEx_ReceiveToIdle”
这个函数以及回调。
验证自己做中断程序是可以的,有空闲中断功能,但不支持这个函数以及相应的回调。
另外,UART1-3都是可以的,但同样的程序,UART4不能用,将USART改成UART也不行。
[md]1、不知你是使用标准库还是Cube HAL库,如果是前者是否有这个HAL_UARTEx_ReceiveToIdle()函数我不确定了,你自行确认即可。 如果是HAL库,这个API函数肯定是有的,除非你的版本很老旧。
2、对于STM32F103系列,我不知你完整料号,那些小封装是没有UART4/5的。
[md]感谢热心答复!
我说的很清楚,UART1-3都是可以的,————不是程序问题!!!
但同样的程序,UART4不能用,将USART改成UART也不行。因为我的103板子上的RS485接的是UART4,所以我只能试试UART4。