这里以stm32c8t6为例,USART1_TX GPIOA.9(发送端) USART1_RX GPIOA.10(接收端)
首先, uart_init(9600); //串口初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
接着,
串口发送数据:
USART_SendData(USART1, Data);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET){};//等待发送结束
串口接收数据
我们知道,stm32通过串口中断 void USART1_IRQHandler(void) //串口1中断服务程序
来接收数据 ,所以我们先来了解一下USART1_IRQHandler(void);
这里USART_RX_BUF[ ] 是接收缓冲数组,即接受的数据都存在这里。
//bit15, 接收完成标志0x0a(换行\n的ASCII值)
//bit14, 接收到0x0d(回车\r的ASCII值)
//bit13~0, 接收到的有效字节数目
可以对接收来的数据进行处理,如USART_RX_BUF[0]
(特别注意:USART_RX_BUF[ ]类型为uint8_t)
switch(USART_RX_BUF[0]) {
case '1': LED1_ON();break;
case '2':LED1_OFF();break;
case '3':LED2_ON();break;
case '4': LED2_OFF();break;
default:printf("error\n");break;
}
|