关于STM32的USART的使用(一)--- 初始化过程

发布者:春水碧于天最新更新时间:2017-10-30 来源: eefocus关键字:STM32  USART的  初始化过程 手机看文章 扫描二维码
随时随地手机看文章

串口的使用过程,无非是正确的配置它的IO口的模式,然后在使用函数进行数据的发送或者接受。那么先来说一下STM32的串口初始化配置需要的过程吧。

贴一段代码,作为例子。(据我的理解,不管是M几的核,只要将下面这几个配置好,串口的IO模式就配置好了。)

 void uart_init(u32 bound)

{

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1和GPIOA时钟 USART_DeInit(USART1); //复位串口1(各参数置为缺省值)

 

 //USART1_TX(发送数据) PA.9引脚

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA.9

 

//USART1_RX(接收数据) PA.10引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA.10

 

//NVIC中断向量配置

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级置为3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级置为3,优先级依据不同的中断重要性不同来确定。 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

NVIC_Init(&NVIC_InitStructure); //根据上面设置的参数初始化NVIC寄存器

 

//USART初始化设置

USART_InitStructure.USART_BaudRate = bound;//波特率为9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据 USART_InitStructure.USART_StopBits = USART_StopBits_1;//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); //串口初始化 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//中断开启

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

}

 

也就是说,你这这几个步骤将一个USART进行了初始化,那么它的GPIO口的模式肯定是配置好了。 再然后就是使用各个收发函数进行 数据的收发了。


关键字:STM32  USART的  初始化过程 引用地址:关于STM32的USART的使用(一)--- 初始化过程

上一篇:STM32外设寄存器地址定义
下一篇:STM32采用结构体定义FSMC的地址

推荐阅读最新更新时间:2024-03-16 15:42

stm32—GPIO操作(库函数)
GPIO的8种方式 1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 2、带上拉输入GPIO_IPU——IO内部上拉电阻输入 3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入 4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电 5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能 6、推挽输出G
[单片机]
STM32 SPI通信--OLED
一、0.96寸OLED 二、原理图 二、GPIO模拟SPI 1. 硬件连接 通过引脚和模块电路图可以分析出SPI的电路连接 OLED STM32 GND ---------- GND VCC ---------- 3.3V D0 ---------- PA4(CLK) D1 ---------- PA3(MOSI) RES ---------- PA2(RET复位) DC ---------- PA1(命令|数据dc) CS ---------- GND 2. 软件驱动 由OLED模块数据手册上SPI的操作时序图写出由GPIO口模
[单片机]
<font color='red'>STM32</font> SPI通信--OLED
基于ZigBee和STM32智能家居控制系统设计与实现(五)--终结
##基于ZigBee和STM32的智能家居控制系统的设计与实现(五)–终结篇 ###说明 首先祝贺自己顺利的完成了毕业答辩工作,想起整个过程还是挺让自己感动的。最后还被评为优秀毕业设计,虽然并没有什么luan用,但是,马上毕业了,还是挺让人怀念的。整个资料从第一篇博客说起就说会全部开源的,期间承蒙各位朋友的支持,给与资助,在此感谢了。虽然资料中私人信息删除了一些,但是不免有疏漏,所以有关个人信息还挺各位删除掉,小弟在此谢谢了! ###总结 下面简单介绍下系统使用到的一些资料和系统实现的功能。 开发系统:Windows10 64位 Ubuntu 14.04 32 位 软件版本:Qt 4.8.6 IAR .0 Altium Des
[单片机]
基于ZigBee和<font color='red'>STM32</font><font color='red'>的</font>智能家居控制系统<font color='red'>的</font>设计与实现(五)--终结
STM32开发笔记65: W5500跨路由不能访问问题解决方法
单片机型号:STM32L053R8T6 现象描述:使用W5500进行以太网设计,用网线直接连接设备通信正常,使用家用无线路由器(自己用TP-Link做的实验),无论是外网访问内网,还是内网访问外网均正常。但是,在现场环境中,不能跨路由通信,现场环境使用的三层交换机是华为的S5720S。现场有正常能够使用的设备,将自己的设备的IP地址、子网掩码、网关与该设备设置的一致,并用同一个网口都不能正常通信。 问题解决:最后将问题锁定在MAC地址上,下图是我的设备的MAC地址,其关键点在于MAC地址的第1字节,具体解释如下。 MAC地址基本含义 MAC(Medium/Media Access Control)地址,用来表示互联网
[单片机]
<font color='red'>STM32</font>开发笔记65: W5500跨路由不能访问问题<font color='red'>的</font>解决方法
STM32 使用DMA+DAC+TIMER输出正弦波
之前已经简单论述过,根据我个人菜鸟的了解与认识,对之前的知识进行整理回顾: DMA:我的理解就是一个通道,或者是一座桥梁。在静态内存到静态内存,或者外设到静态内存间的一个通讯的通道。建立这个通道的好处是:可以抛开CPU,不占用CPU的资源,直接使用这块内存的内容,速度也会加快。 DAC:STM32F103中有两个DAC,可以同时使用。DAC的作用就是将数字量转化为模拟量(电压),在这就不作太多的讲解。 TIMER:定时器。不作讲解。 那么对于使用DMA+DAC+TIMER产生正弦波的原理或过程,我有这样一个简单的理解:先将一个可以生成正弦波的数据表保存在静态内存中,然后在DAC以及这块内存中间使用DMA建立一个通道
[单片机]
STM32中使用HAL库重定向printf()函数
函数添加头文件 #include stdio.h 添加函数 // 重定向函数1 int fputc(int ch,FILE *f) { uint8_t temp ={ch}; HAL_UART_Transmit(&UartHandle,temp,1,2); //UartHandle是串口的句柄 } //重定向函数2 PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&UARTHandle, (uint8_t *)&ch, 1, 0xFFFF); return ch; } 在keil中勾选使用C库 之后就可以 使用printf()函数,像C语言一样输出打印信息,支持 %
[单片机]
<font color='red'>STM32</font>中使用HAL库重定向printf()函数
STM32学习笔记5:通用定时器PWM输出
1. TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文 Pulse Width Modulation 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的( 110 为模式1, 111 为模式2)。模式
[单片机]
基于STM32 MCU太阳能LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的led固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等功能。
[电源管理]
基于<font color='red'>STM32</font> MCU<font color='red'>的</font>太阳能LED街灯解决方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved