新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2021-1-9
- 在线时间
- 41 小时
|

楼主 |
发表于 2021-6-30 22:04:51
|
显示全部楼层
串口配置如下
void Print_UART1_init(u32 baud)
{
GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef USART_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_AHB1PeriphClockCmd(PRINT_GPIO_CLK, ENABLE);
RCC_APB2PeriphClockCmd(PRINT_UART_CLK, ENABLE);
GPIO_PinAFConfig(PRINT_GPIO_PORT, PRINT_UART_TX_REMAP, GPIO_AF_USART1);
GPIO_PinAFConfig(PRINT_GPIO_PORT, PRINT_UART_RX_REMAP, GPIO_AF_USART1);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin = PRINT_UART_TX_PIN|PRINT_UART_RX_PIN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(PRINT_GPIO_PORT, &GPIO_InitStruct);
USART_InitStruct.USART_BaudRate = baud;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_Init(PRINT_UART_PORT, &USART_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel = PRINT_UART_IRQ;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;
NVIC_Init(&NVIC_InitStruct);
USART_ClearITPendingBit(PRINT_UART_PORT, USART_IT_TC);
USART_ITConfig(PRINT_UART_PORT, USART_IT_TC, ENABLE);
USART_Cmd(PRINT_UART_PORT, ENABLE);
}
u8 Print_UART1_RecvByte(USART_TypeDef* GPIO_Port)
{
while(USART_GetFlagStatus(GPIO_Port, USART_FLAG_RXNE) != SET);
return USART_ReceiveData(PRINT_UART_PORT);;
}
void Print_UART1_SendByte(USART_TypeDef* GPIO_Port, u8 data)
{
USART_SendData(GPIO_Port, (u16)data);
while(USART_GetFlagStatus(GPIO_Port, USART_FLAG_TXE) != SET);
}
void Print_UART1_SendNByte(USART_TypeDef* GPIO_Port, u8* data, u32 len)
{
int i ;
for(i = 0; i < len; ++i){
Print_UART1_SendByte(GPIO_Port, data[i]);
}
while(!USART_GetFlagStatus(GPIO_Port, USART_FLAG_TC));
}
int fputc(int ch, FILE *f)
{
USART_SendData(PRINT_UART_PORT, (uint8_t) ch);
while (USART_GetFlagStatus(PRINT_UART_PORT, USART_FLAG_TXE) == RESET);
return (ch);
}
int fgetc(FILE *f)
{
while (USART_GetFlagStatus(PRINT_UART_PORT, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(PRINT_UART_PORT);
} |
|