voidSend_data(u8*s){while(*s!='\0'){while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);USART_SendData(USART1,*s);s++;}} 以上程序的形参就是我们调用该函数时要发送的字符串,这里通过循环调用USART_SendData来一 一发送我们的字符串。 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==R...
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET) //中断产生 { USART_ClearFlag(USART1, USART_FLAG_RXNE); //清除中断标志 Usart1_data = USART_ReceiveData(USART1); //接收串口1数据到buff缓冲区 if(Usart1_data =='+') //接收到数据头标识 { // OSSemPend((OS_SEM* ) SEM_IAR_UAR...
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET) //中断产生 { USART_ClearFlag(USART1, USART_FLAG_RXNE); //清除中断标志 Usart1_data = USART_ReceiveData(USART1); //接收串口1数据到buff缓冲区 if(Usart1_data =='+') //接收到数据头标识 { // OSSemPend((OS_SEM* )&SEM_IAR_UAR...
USART_SendData( USART2,data ); while( USART_GetFlagStatus( USART2,USART_FLAG_TXE ) == RESET );//数据没有被传入输出移位寄存器,则一直等待下去 //RS485_RX_EN; } 同事帮忙改了一下lib库函数:USART_SendData,在其后面加了:while((USARTx->SR&0x40)==0);///发现最后一字节数据会漏发,才加上的...
串口发送数据1、串口发送数据最直接的方式就是标准调用库函数 。voidUSART_SendData(USART_TypeDef* USARTx,uint16_tData); 第一个参数是发送的串口号,第二个参数是要发送的数据,但是用过的朋友应该觉得不好用,一次只能发送单个字符,所以我们有必要根据这个函数加以扩展: ...
sendByte(temp); RS485_RX_EN; //enable rs485 rx } 其中:sendByte函数如下: void sendByte( unsigned char data) { //RS485_TX_EN; _SendData( USART2,data ); while( USART_GetFlagStatus( USART2,USART_FLAG_TXE ) == RESET ); //数据没有被传入输出,则一直等待下去 ...
这里如果没有读取RxData数据就需要手动清除标志位,也就是USART_ClearITPendingBit();这行代码,为了保险...
voidUSART_SendData(USART_TypeDef* USARTx,uint16_tData); 第一个参数是发送的串口号,第二个参数是要发送的数据,但是用过的朋友应该觉得不好用,一次只能发送单个字符,所以我们有必要根据这个函数加以扩展: voidSend_data(u8 *s) { while(*s!='\0') ...
⽤STM32官⽅库⾃带的USART_SendData函数发送字符串 源代码 //USARTx 串⼝ //*string 字符串 //enter 回车 void send_Data(USART_TypeDef* USARTx, u8 *string, u8 enter){ do { while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);USART_SendData(USARTx,*string);while(USART_GetFlagStatus(...
//串口使能USART_Cmd(USART2,ENABLE); 5. 串口发送数据 注意哈,我们要判断TXE标志位的状态。0,数据还没有被转移到移位寄存器;1,数据已经被转移到移位寄存器。 当TXE标志位为1时,就说明可以发送下一个数据了。详细过程可看上面串口发送的解释。 voidSerial_SendB...