STM32F407ZG(参考正点原子)

串口配置

一.   串口操作相关库函数(省略入口参数)

void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能

void USART_Cmd();//使能串口

void USART_ITConfig();//使能相关中断

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

FlagStatus USART_GetFlagStatus();//获取状态标志位

void USART_ClearFlag();//清除状态标志位

ITStatus USART_GetITStatus();//获取中断状态标志位

void USART_ClearITPendingBit();//清除中断状态标志

二.   串口配置的一般步骤

  • 串口时钟使能:RCC_APBxPeriphClockCmd();

     GPIO时钟使能:RCC_AHB1PeriphClockCmd();

② 引脚复用映射:

     GPIO_PinAFConfig();

③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF

④串口参数初始化:USART_Init();

⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

      NVIC_Init();

      USART_ITConfig();

⑥使能串口:USART_Cmd();

⑦编写中断处理函数:USARTx_IRQHandler();

⑧串口数据收发:

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

⑨串口传输状态获取:

FlagStatus USART_GetFlagStatus();

void USART_ClearITPendingBit();

 

 

比如

STM32F407串口配置

比如这段串口初始化函数

首先

  1. 输入  USART_Init,并右键查看其定义;

STM32F407串口配置

可以看出需要定义一个(串口号,USART初始化结构体)

注意:IS_USART_ALL_PERIPH(A)翻译过来,就是看括号里的输入值是否在输入范围内,如果是,就返回1,即true。

所以,右键,查看IS_USART_ALL_PERIPH的定义,我们就知道了输入的范围,我们这里用的USART1,则输入USART1;

STM32F407串口配置

2. 对于第二个输入量,我们需要定义一个结构体,按照入口函数的样子定义一个,

USART_InitTypeDef USART_InitStructure;

3. 这样,当我们输入USART_InitStructure.的时候,后面的结构体内部变量就会提示,一个个点击,并赋值就好了;

USART_InitStructure.USART_BaudRate=115200;

同样,你会想,怎么知道输入的应该是115200,或者说你知道是115200,但是不知道是什么格式,和上面的一样,右键USART_Init,并查看其定义;

STM32F407串口配置

右键IS_USART_WORD_LENGTH查看其定义,发现可以是USART_WordLength_8b或者是USART_WordLength_9b

STM32F407串口配置

上面这段代码看起来也比较清爽;

IS_USART_WORD_LENGTH(LENGTH),如果LENGTH在正确的范围内即等于8b或者9b

 

assert_param它的作用就是检测传递给函数的参数是否是有效的参数。

STM32F407串口配置

Stm32f4xx_conf.h里的注释说明如下:

The assert_param macro is used for function's parameters check.

  * @param  expr: If expr is false, it calls assert_failed function

  *   which reports the name of the source file and the source

  *   line number of the call that failed.

*   If expr is true, it returns no value.

assert_param宏用于函数的参数检查。 @param expr:如果expr为false,则调用assert_failed函数,该函数报告源文件的名称和失败的调用的源行号。 如果expr为true,则不返回任何值。

 

ps: C语言知识:||是逻辑符号或。
\是连接符,不是换行,define需要定义都在同一行,而同一行写不下就可以用"\"表示连接在同一行里。

相关文章: