
大家都知道USART中RX和TX这两个引脚的功能,它们是USART串行通信最常见和必不可少的两个引脚。但是USART的其他引脚如USART_RTS和USART_CTS都没有说明,查了很多资料,有帖子提到是硬件流控制,在进行串口初始化的时候,把下面定义的 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 改成下面三种即可实现硬件流控制。 USART_HardwareFlowControl_RTS USART_HardwareFlowControl_CTS USART_HardwareFlowControl_RTS_CTS 我的疑惑是那对应RTS的GPIO引脚不需要定义了吗?STM32的任何GPIO引脚应用前都要初始化定义一下。 不知有没有人用过? |
PWD13F60功率模块在应用时是否需要加额外的散热器
使用L476_NUCLEO板串口通信,波特率为什么到460800就收不到数据?目标为1382400
为什么Stm32F103驱动ov7670有严重的分屏现象。
签到
签到
STM32f407ZG使用STM32CubeMX创建USB应用失败
关于STM32的高精度定时器应用问题请求帮助
STM32L031X 1.65V 低压应用
L6470的应用问题,高速不转振动
MDK能否仿真App应用程序(STM32起始地址不为0x08000000)?
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
公司前人在基于STM32L151上做的项目,用的是RX、TX和RTS这三个Pin,在程序里也提到用RTS,但我就没发现RTS的初始化之类的命令。该串口初始化的代码如下:
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Connect PXx to USARTx_Rx*/
GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 2400;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx ;
/* USART configuration */
USART_Init(USART2, &USART_InitStructure);
USART_ITConfig(USART2,USART_IT_RXNE, ENABLE);
/* Enable the xxx gloabal Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* Enable USART */
USART_Cmd(USART2, ENABLE);
只用了PA2和PA3这两个RX和Tx端口,硬件控制流为USART_HardwareFlowControl_None也就是说没用到。所以我怀疑在这个程序中PA1(RTS)就是个普通的GPIO。
评分
查看全部评分
嗯,的确很少见到用RTS、CTS的实际案例,真不理解为啥STM32芯片为啥坚持USART。