#include "STM32Lib\\stm32f10x.h" /********************************************** **串口配置函数,这里使能了两个串口,其中串口2使用了中断接收模式 ** **********************************************/ u8 Uart1_Get_Flag; //串口1接收到数据标志 u8 Uart1_Get_Data; //串口1接收的数据 void USART_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure; //使能串口1,PA,AFIO总线 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); /* A9 USART1_Tx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出-TX GPIO_Init(GPIOA, &GPIO_InitStructure); /* A10 USART1_Rx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入-RX GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; 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_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_ClockInit(USART1, &USART_ClockInitStructure); USART_Init(USART1, &USART_InitStructure); /* Enable the USARTx */ USART_Cmd(USART1, ENABLE); //串口1使用接收中断 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //使能串口2时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); // A2 做T2X GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); // A3 做R2X GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; 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_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_ClockInit(USART2, &USART_ClockInitStructure); USART_Init(USART2, &USART_InitStructure); USART_Cmd(USART2, ENABLE); //串口2使用接收中断 USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); } void USART1_Putc(unsigned char c) { USART_SendData(USART1, c); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET ); } void USART1_Puts(char * str) { while(*str) { USART_SendData(USART1, *str++); /* Loop until the end of transmission */ while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } } void USART2_Putc(unsigned char c) { USART_SendData(USART2, c); while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET ); } void USART2_Puts(char * str) { while(*str) { USART_SendData(USART2, *str++); /* Loop until the end of transmission */ while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); } } |