STM32串口配置的一般步骤(库函数)
(1)串口时钟使能:RCC_APBxPeriphClockCmd();
    GPIO时钟使能:RCC_AHBxPeriphClockCmd();
(2)引脚复用映射:GPIO_PinAFConfig();
(3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_Mode_AF
(4)串口参数初始化:USART_Init();
(5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
    NVIC_Init();
    USART_ITConfig();
(6)使能串口:USART_Cmd();
(7)编写中断处理函数:USARTx_IRQHandler();
(8)串口数据收发:
    void USART_SendData();//发送数据到串口,DR
    uint16_t USART_ReceiveData();//接收数据,从DR读取接收的数据
(9)串口传输状态获取:
    FlagStatus USART_GetFlagStatus();
    void USART_ClearITPendingBit();

范例代码:

#include "stm32f4xx.h"
#include "usart.h" /* 中断服务函数 */
void USART1_IRQHandler(void)
{
uint16_t recv; if (USART_GetFlagStatus(USART1,USART_IT_RXNE))
{
recv = USART_ReceiveData(USART1);
USART_SendData(USART1,recv);
}
} void Usart1_Demo_Init(void)
{
GPIO_InitTypeDef GPIOA_InitStruct;
USART_InitTypeDef USART1_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* 使能USART1时钟 */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* 使能GPIOA的时钟 */ /* 将PA9和PA10映射到串口1 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); /* 设置GPIO端口模式 */
GPIOA_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIOA_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIOA_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIOA_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIOA_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIOA_InitStruct); /* 串口参数初始化 */
USART1_InitStruct.USART_BaudRate = ;
USART1_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART1_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART1_InitStruct.USART_Parity = USART_Parity_No;
USART1_InitStruct.USART_StopBits = USART_StopBits_1;
USART1_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1, &USART1_InitStruct); /* 使能USART1 */
USART_Cmd(USART1, ENABLE); /* 使能串口使用的中断 */
NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = ;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = ;
NVIC_Init(&NVIC_InitStruct);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
} int main(void)
{
/* 设置中断分组 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart1_Demo_Init(); while ();
}

【STM32】STM32串口配置的一般步骤(库函数)的更多相关文章

  1. STM32串口配置步骤

    串口设置的一般步骤可以总结为如下几个步骤: 1) 串口时钟使能, GPIO 时钟使能2) 串口复位3) GPIO 端口模式设置4) 串口参数初始化5) 开启中断并且初始化 NVIC(如果需要开启中断才 ...

  2. STM32之串口DMA接收不定长数据

    STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口 ...

  3. STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷

    STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷 http://www.openedv.com/thread-63849-1-1.html 实现思路:采 用STM32F103的串口1,并配 ...

  4. 单片机stm32 USART串口实际应用解析

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...

  5. STM32单片机串口一键下载电路与操作方法详解

    STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的Flash.2)SRAM = 芯片内置的RAM区,就是内存啦.3)系统存储器 = 芯片内部一块特定的区域,芯片出 ...

  6. stm32的串口接收字符串以十六进制数

      #include "pbdata.h"   uint8_t TxBuffer1[] = "USART Interrupt Example: This isUSART1 ...

  7. Eclipse配置Lifery SDK步骤与错误解决。

    第一步.我们先去官网下载我们要用的东西 1.Eclipse 2.SDK 3.Tomcat 这是官网下载地址-->https://www.liferay.com/zh/downloads 下面是图 ...

  8. centos6.4安装配置vpn服务器步骤详解

      centos6.4安装配置vpn服务器步骤详解,从安装VPN到配置VPN服务器.配置VPN服务器的路由转发功能,每一步都很详细   一.VPN服务器环境说明 操作系统:CentOS release ...

  9. Fedora 14配置vsftp服务步骤

    Fedora 14配置vsftp服务步骤:1:检查Fedora14是否安装了vsftp服务    用rpm -qa|grep vsftp命令检查是否安装了vsftp服务,如果安装了,会显示安装好的版本 ...

随机推荐

  1. 2019牛客暑期多校训练营(第一场)H 线性基+计算贡献

    题意 给n个整数,求满足子集异或和为0的子集大小之和. 分析 将问题转化为求每个元素的贡献次数之和. 先对n个数求线性基,设线性基大小为r,即插入线性基的数字个数为r,可以分别计算线性基内数的贡献和线 ...

  2. windows驱动开发详解学习笔记

    1. windows驱动分两类,NT式驱动和WDM驱动,后者支持即插即用: 2. DriverEntry是入口函数,传入参数:pDriverObject由IO管理器传入: 3. WDM驱动中,AddD ...

  3. 灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...

  4. Nginx-rtmp之 AMF0 的处理

    1. 综述 当检测到接收到的 RTMP 消息中 Message Header 中 message type id 为 20 时,表示,接收到的是 AMF 类型的数据, 因此需要对接收的数据进行 AMF ...

  5. 黑马lavarel教程---11、响应处理

    黑马lavarel教程---11.响应处理 一.总结 一句话总结: 如果在昂扬状态,看学习视频和运动时间重合,会很舒服 1.jquery的$.post参数为什么不需要占位? 因为每个参数的类型不同,可 ...

  6. Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”

      Ubuntu14.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit ...

  7. mysql 创建相同的表结构

    前言: 项目中用到分表存储,需要创建100张表,每个表的结构相同,原始操作,一个个复制粘贴,修改名字.今天DBA给了意见 create table a like b 将b的表结构和索引都复制  cre ...

  8. spring boot知识清单

    https://mp.weixin.qq.com/s/q8OI2Ou8-gYP-usjToBbkQ

  9. go get命令在go mod目录下与正常目录执行的区别

    转载自https://www.jianshu.com/p/0a2ebb07da54 非$GOPATH目录下的go mod项目 $ go mod init test $ cat go.mod modul ...

  10. win10搜索框突然不能使用了

    备忘: win10搜索不出来了,使用以下方法恢复了,备忘下 1,首先打开任务管理器 重新启动wservice服务 2.发现这时候搜索依然不能使用 然后重新启动explorer.exe (1)右键关闭该 ...