uint8_t RX_Data;int main(){ Serial_Init(); // 初始化串口 Serial_SendByte(0x16); // 发送测试数据 while(1) { if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) // 判断RXNE标志位是否为1,即数据是否可读 { RX_Data = USART_ReceiveData(USART2); //...
void UART_SendByte(uint8_t Data){while(RESET==USART_GetFlagStatus(USART1,USART_FLAG_TXE));USART_SendData(USART1, Data);while(RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC));} 如果使用标准外设库,要根据实际情况封装函数,比如发送超时。或者使用HAL封装的接口,代码包含判断传输完成: HAL_St...
USART_Cmd(USART1, ENABLE);// 4.开启串口1}/* 发送一个字节 */voidSerial_SendByte(uint8_tByte)// 这里只传8位,用uint_8可以。要传9位的话就得是uint_16的类型了{ USART_SendData(USART1, Byte);while((USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)); }/* 发送一个数组 */void...
这里如果没有读取RxData数据就需要手动清除标志位,也就是USART_ClearITPendingBit();这行代码,为了保险...
初始化串口,USART_InitTypeDef 中断配置(接收中断,中断优先级) 使能串口 编写发送和接收函数 编写中断服务函数 发送接收函数 /** @函数名:UART_SendByte(USART_TypeDef *p_USARTx, uint8_t ch)* @功能:发送一个字节* @入口参数:USARTx,ch(想发送的字节)*/static void UART_SendByte(USART_TypeDef *p_USARTx,...
voidUART_Send_String(USART_TypeDef *USARTx,char*str) {inti=0;#if0while(*(str+i)!='\0') { USART_SendData(USARTx,*(str+i));//错误的,没有进行TXE检测i++; }#endif#if1do{ UART_Send_Byte(USARTx,*(str+i));//正确的,进行了TXE检测 ...
/*** 发送一个字符 ***/voidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch){/* 发送一个字节数据到 USART */USART_SendData(pUSARTx,ch);/* 等待发送数据寄存器为空 */while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);}/*** 发送字符串 ***/voidUsart_SendString(USART_TypeDef*...
USART1_SendByte(GetData); //发送数据 GPIO_SetBits(GPIOE, GPIO_Pin_8 ); //LED闪烁,接收成功发送完成 delay(1000); GPIO_ResetBits(GPIOE, GPIO_Pin_8 ); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 这是最基本的,将数据接收完成后又发送出去,接收和发送在中断函数里执行,ma...
USART1->DR=0XFF; A=USART1->DR RXEN: DR寄存器收到数据可以读出 //做用于中断 TXE:数据已经移动到位移寄存器标志位;可以把下一个数据放到DR寄存器了 TX:位移数据寄存器已经发送完成了 波特率计算公式:串口时钟/16*USARTPIV 例要115200的波特率,可以代入115200=72000000/16*USARTPIV,只要求出USARTPIV写入到相关...
USART_SendData(USART1,ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //获取发送状态 } /*发送字符串 */ void Uart_SendString(uint8_t *str) { uint8_t k=0; do { Uart_SendByte(*(str + k) ); ...