while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,22);
改成这个,串口助手直接什么都不显示了:L 改成这个
while( USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET );
USART_SendData(USART2,22); 1、TXE在单缓冲器传输中使用。而TC位则推荐在多缓存通讯中使用。
2、while应该放在前面,等待串口上的数据发送完毕,再发下一帧数据 楼上说的没错while应该放在前面,放后面,串口初始化之后第一个字节发送不出去 feifei2020 发表于 2019-12-20 17:05
1、TXE在单缓冲器传输中使用。而TC位则推荐在多缓存通讯中使用。
2、while应该放在前面,等待串口上的数据 ...
改成这个
while( USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET );
USART_SendData(USART2,22);
串口没有显示了
我改成printf输出:
int main(void)
{
USART_Config();
while(1)
{
printf( "22 \n");
printf( "33 \n");
}
}
其他相关配置:
UART相关的配置:
void USART_Config(void)
{ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;
DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
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_Mode_Tx;
USART_Init(DEBUG_USARTx, &USART_InitStructure);
NVIC_Configuration();
USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
USART_Cmd(DEBUG_USARTx, ENABLE);
USART_ClearFlag(USART1, USART_FLAG_TC);
}
/// 重定向C库函数printf到USART2
int fputc(int ch, FILE *f)
{
DEBUG_USARTx->SR;
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE)== RESET);
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
return (ch);
}
串口助手可以正常显示一部分后乱码,然后就没有数据传输,需要重新断电后,传输部分数据,乱码,...
你好像没有进行GPIO_PinAFConfig配置,而且DEBUG_USART_GPIO_APBxClkCmd和DEBUG_USART_APBxClkCmd命令我没用过,不知道是什么。还有,你具体是哪个型号的STM32? feifei2020 发表于 2019-12-23 14:05
你好像没有进行GPIO_PinAFConfig配置,而且DEBUG_USART_GPIO_APBxClkCmd和DEBUG_USART_APBxClkCmd命令我没 ...
用的是STM32F103,我试着把我写的程序下载到开发板上,是没有问题的,我怀疑我的板子上485这块是不是有问题,我用的是MAX3485。
搞不懂哪里出问题了。 已经解决了,谢谢各位
页:
1
[2]