stm32看你是用什么的歷程,如果是正點原子的話,本來串口一就可以通過快速把數據存入BUF中發送出去,不用等接受到數據,下面附上在其他串口都可以使用的發送函數,STM32f103 f409標準庫通用的 void USART3_IRQHandler(void) { u8 res; if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到數據 { res =USART_ReceiveData(USART3); gizPutData(&res, 1);//數據寫入到緩沖區 } } void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch) { /* 發送一個字節數據到USART */ USART_SendData(pUSARTx,ch); /* 等待發送數據寄存器為空 */ while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET); } //初始化IO 串口3 //pclk1:PCLK1時鐘頻率(Mhz) //bound:波特率 void usart3_init(u32 bound) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //GPIOB時鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口3時鐘使能 USART_DeInit(USART3); //復位串口3 //USART3_TX PB10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出 GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB10 //USART3_RX PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入 GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB11 USART_InitStructure.USART_BaudRate = bound; //波特率一般設置為9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字長為8位數據格式 USART_InitStructure.USART_StopBits = USART_StopBits_1; //一個停止位 USART_InitStructure.USART_Parity = USART_Parity_No; //無奇偶校驗位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數據流控制 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發模式 USART_Init(USART3, &USART_InitStructure); //初始化串口3 USART_Cmd(USART3, ENABLE); //使能串口 //使能接收中斷 USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //開啟中斷 //設置中斷優先級 NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//搶占優先級3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優先級3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根據指定的參數初始化VIC寄存器 } |