牛人请指点下 串口初始化 void Uart1_Init(void) { SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);//TXD GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_In_PU_No_IT);//RXD GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_2, ENABLE); GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_3, ENABLE); // USART_DeInit(USART1); //复位UART1 /* * 将UART1配置为: * 波特率 = 38400 * 数据位 = 8 * 1位停止位 * 无校验位 * 使能接收和发送 */ USART_Init(USART1, (u32)38400, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx); } 数据发送 void UART1_SendByte(u8 data) { USART_SendData8(USART1, data); /* 等待传输结束 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); } main() { u8 UART1_RX_BUF; CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_8); while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == RESET); //2MHZ内部晶振 Uart1_Init(); //串口1初始化 while(1) { /* 等待接收完成 */ if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)) { UART1_RX_BUF = USART_ReceiveData8(USART1); UART1_SendByte(UART1_RX_BUF ); } } 以上就是所有程序, 目前问题是: 1.在用电脑串口助手发送数据时,如果一次只发送一个字节,则UART1_RX_BUF = USART_ReceiveData8(USART1)接收的是错误的数据, 2.只有在一次发送数据在两个字节以上时UART1_RX_BUF = USART_ReceiveData8(USART1)接收的数据从第二个字节开始才是准确的, 3. UART1_SendByte(UART1_RX_BUF )在发送第一个字节时会出现数据丢失; |
STM32CubeIDE printf浮点数,浮点数丢失数值
使用usb怎么配置dma搬运
STM8AF系列可以通过Flash Loader Demonstrator用lin总线刷写程序吗
STM32F1HAL,TIM2定时printf打印出现丢数值
Stlcr1v1传感器的连接座是通过哪几个引脚往外传温度的啊?
# 如何使用CubeMX生成的设备树生成镜像&&如何为MP135添加一个串口?&&关于SDK的一些疑问
STM32H747的串口加DMA
cubemx配置开发板引脚但已经被占用
stm8l152 低功耗7uA,降不下来
stm32f103c8t6串口发送大量hex数据失效。
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
{
UART1_RX_BUF = USART_ReceiveData8(USART1);
UART1_SendByte(UART1_RX_BUF );
}
这里有问题吧?没接收完成就开始发送了?
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
Uart1_Init(); //串口1初始化
后面加一句:
USART_GetITStatus(USART1, USART_FLAG_TC);
评分
查看全部评分
评分
查看全部评分
初始化串口的最后加一个清标志动作.这个应该是你的问题3
USART_ClearFlag(USART3,USART_FLAG_TC); //清发送完成标志, 否则第一个发不出
1,2其实都是一个问题,你可试下在初始后串口的最后读一下串口试试.
评分
查看全部评分
还有 UART1_RX_BUF是什么类型的?是uiint8_t或者u8类型么?
评分
查看全部评分
评分
查看全部评分
问题出在这里。USART_ClearFlag(USART3,USART_FLAG_TC); ==>改为查TXE
这里描述的比较清楚。一个关于USART 传输标志TXE/TC 的话题
评分
查看全部评分