×
单片机 > 单片机程序设计 > 详情

STM32f4---串口通信实验代码(01)

发布时间:2020-05-19 发布时间:
|

打开串口实验工程,然后在SYSTEM组下双击usart.c,我们就可以看到该文件里面的代码,先介绍 uart_init函数,该函数代码如下:

void uart_init(u32 bound)

{

      GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

 

//GPIOA和USART1时钟使能

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能 GPIOA 时钟  

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能 USART1 时钟  

  

//USART_DeInit(USART1);  //复位串口 1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //PA9复用为USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //PA10复用为USART1

  

//USART1_TX   PA.9 PA.10 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //速度 50MHz

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10

 

//USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式

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_Init(USART1, &USART_InitStructure); //初始化串口

 

#if EN_USART1_RX  //NVIC 设置,使能中断

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断

//Usart1 NVIC 配置

  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级2

NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;    //响应优先级 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      //IRQ 通道使能

NVIC_Init(&NVIC_InitStructure);  //根据指定的参数初始化VIC 寄存器、

#endif

}

   USART_Cmd(USART1, ENABLE);  //使能串口 

从该代码可以看出,其初始化串口的过程,和我们前面介绍的一致。我们用标号~标示了顺序:

  串口时钟使能,GPIO时钟使能

  设置引脚复用器映射

  GPIO 端口初始化设置

  串口参数初始化

  初始化 NVIC 并且开启中断

  使能串口

这里需要注意一点,因为我们使用到了串口的中断接收,必须在 usart.h 里面设置 EN_USART1_RX为1 (默认设置就是1的) 。该函数才会配置中断使能,以及开启串口1的NVIC中断。这里我们把串口 1中断放在组2,优先级设置为组2 里面的最低。

串口 1 的中断服务函数 USART1_IRQHandler,在 5.3.3 已经有详细介绍了,这里我们就不再介绍了。


关键字:STM32f4  串口通信  实验代码 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址