简介
STM32F1基本配置2.串口的配置和常用函数,侧重于即配即用。
因此不会讲述太多原理性的东西,希望做到即拿即用的效果。
串口简介
串口是MCU重要的外部接口,用于数据传输,也是开发中重要的调试手段。
STM32的串口资源丰富,支持多种通讯模式,具有DMA等。
串口的参数有波特率,停止位等。
由于这里侧重于即配即用,更多详细的内容可自行查阅。
串口配置相关知识
至于串口的波特率等相关参数的知识,网上已经有很多资料可自行查阅。
在这里说一下使用printf打印串口的知识:
由于是在MCU上运行的程序,所以无法像写C语言一样直接使用printf。
要想使用printf打印串口则需要改写fputc函数,如下:
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (u8)ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{
}
return ch;
}
然后是串口中断的知识:
常用的串口中断有RXNE(读寄存器非空)和TC(发送完成)。
当使能了这两个中断
如:USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TC, ENABLE);
只要产生读寄存器非空和发送完成的事件就会进入到中断函数
void USART1_IRQHandler(void)里面去执行,
一般进入中断函数后先判断是哪种中断(只要产生中断就进入这个中断函数),
判断是哪种中断:USART_GetITStatus(USART1, USART_IT_RXNE)
在出中断函数前要擦除中断标志:
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
串口无中断配置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);