本代码为串口的输出与输入操作的代码初始化.
内容基本与stm32串口初始化一致.
#include "usart1.h"
void UART1_Init(void) {
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1, ENABLE);
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO, ENABLE);
GPIO_InitType GPIO_InitStruct1 = {0};
GPIO_InitStruct(&GPIO_InitStruct1);
GPIO_InitStruct1.Pin = GPIO_PIN_9 | GPIO_PIN_10;
GPIO_InitStruct1.GPIO_Alternate = GPIO_AF4_USART1;
GPIO_InitStruct1.GPIO_Mode = GPIO_MODE_AF_PP;
GPIO_InitPeripheral(GPIOA, &GPIO_InitStruct1);
USART_InitType USART_InitStruct = {0};
USART_InitStruct.BaudRate = 115200;
USART_InitStruct.WordLength = USART_WL_8B;
USART_InitStruct.StopBits = USART_STPB_1;
USART_InitStruct.Parity = USART_PE_NO;
USART_InitStruct.Mode = USART_MODE_RX | USART_MODE_TX;
USART_InitStruct.HardwareFlowControl = USART_HFCTRL_NONE;
USART_Init(USART1, &USART_InitStruct);
USART_ConfigInt(USART1,USART_INT_RXDNE,ENABLE);
NVIC_InitType NVIC_InitStruct = {0};
NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPriority = 3;
NVIC_Init(&NVIC_InitStruct);
USART_Enable(USART1, ENABLE);
}
int fputc(int ch, FILE *f)
{
while(USART_GetFlagStatus(USART1, USART_FLAG_TXDE) != 1);//等待数据发完
USART_SendData(USART1,ch);
return ch;
}
void USART1_IRQHandler(void)
{
uint8_t data1 = 0;
if(USART_GetFlagStatus(USART1, USART_INT_RXDNE) == SET)
{
data1 = USART_ReceiveData(USART1);//库函数读
USART1->DAT = data1;
// USART_SendData(USART1,data1);
}
}