|
牛人请指点下 串口初始化 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 )在发送第一个字节时会出现数据丢失; |
STM8L的bootload中断向量表重映射
为何STM8S003F3进不了TIM1中断?
stm32f746g-disco开发板的串口通讯连接方式
STM8L的block大小和数量
DMA传输完成后,串口与DMA一直处于忙状态
Error in final launch sequence: Failed to execute MI command: target remote localhost:61234
请问设备剧烈运动后静置数据无法归零,必须重启设备才能归零,是什么原因呢,如何处理,谢谢各位有偿咨询各位
STM32CubeID V1.19.0 无法识别串口设备
求STM8S105C6T6的安装软件完整版和安装步骤,谢谢!
为什么STM32G431的串口用不了2.5M的波特率
微信公众号
手机版
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 的话题
评分
查看全部评分