#include "UART.h"
void USART1_Init(void)
{
USART_InitTypeDef USART1_Initstructure;
GPIO_InitTypeDef GPIO_UASRT1struct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_UASRT1struct.GPIO_Pin = GPIO_Pin_9 ; //TX
GPIO_UASRT1struct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_UASRT1struct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_UASRT1struct);
GPIO_UASRT1struct.GPIO_Pin = GPIO_Pin_10 ; //RX
GPIO_UASRT1struct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
// GPIO_UASRT1struct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_UASRT1struct);
USART1_Initstructure.USART_BaudRate = 115200;
USART1_Initstructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART1_Initstructure.USART_Mode =USART_Mode_Tx|USART_Mode_Rx;
USART1_Initstructure.USART_Parity = USART_Parity_No;
USART1_Initstructure.USART_StopBits =USART_StopBits_1;
USART1_Initstructure.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1,&USART1_Initstructure);
NVIC_Configuration();
USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_UART1Structure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_UART1Structure.NVIC_IRQChannel = USART1_IRQn;
NVIC_UART1Structure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_UART1Structure.NVIC_IRQChannelSubPriority = 1;
NVIC_UART1Structure.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&NVIC_UART1Structure);
}
上面是UART.c
// 串口中断服务函数
void DEBUG_USART_IRQHandler(void)
{
uint8_t ucTemp;
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp = USART_ReceiveData(DEBUG_USARTx);
USART_SendData(DEBUG_USARTx,ucTemp);
}
}
在中断里面it.c加入中断服务函数
大概就是这样子了