STM32单片机串口的定义及应用方法

发布者:Shuangfei最新更新时间:2024-09-27 来源: elecfans关键字:STM32  单片机  串口 手机看文章 扫描二维码
随时随地手机看文章

STM32配置串口需要配置的寄存器包括:

1、时钟配置,开启相应IO端口的时钟,以及串口模块的时钟。

串口1模块时钟寄存器:RCC_APB2Periph_USART1;

串口1的端口是PA9,PA10,对应的时钟寄存器:RCC_APB2Periph_GPIOA;

开启的函数是:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);

串口2的模块时钟寄存器:RCC_APB1Periph_USART2;

串口2的端口是PA2,PA3;对应的时钟寄存器是:RCC_APB2Periph_GPIOA;

开启的函数是:RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART2| RCC_APB2Periph_GPIOA, ENABLE);

此处的意义在于开启了我们要使用的模块:串口模块1/串口模块2,以及对应的IO时钟项。如果要使用STM32中的硬件首先就是要配置和开启相应模块的时钟。

2、IO重映射的问题:

STM32的管脚功能可以重映射,可以将串口2的TX和RX端口从原来默认的PA2PA3,重新定义到PD5,PD6上,定义完成后,串口2的TX和RX端口就不再是原来的管脚,而是PD5,PD6了。

要进行IO的重映射,首先要开启IO重映射的时钟:此项时钟寄存器的名称是:RCC_APB2Periph_AFIO;

开启此时钟的代码:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

开启了时钟后,还要写入控制IO重定义功能的寄存器:

GPIO_PinRemapConfig函数是用来写入此寄存器的,写入对应的位,就可以实现IO的重定义功能。

GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

如果IO重定义了,那么重定义之前的端口PA2PA3就不要设置了,只设置映射后PD5PD6就可以了。

3、设置TxRX的IO功能模式,以及IO的speed。

//GPIO配置RX

GPIO_InitStructure.GPIO_Pin= USART1_RxPin;//

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING;

GPIO_Init(USART1_GPIO,&GPIO_InitStructure);

//GPIO配置TX

GPIO_InitStructure.GPIO_Pin= USART1_TxPin;

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP;

GPIO_Init(USART1_GPIO,&GPIO_InitStructure);

此处需要注意的是:

1.Speed = 50hz.

2.Rx的mode设置为:GPIO_Mode_IN_FALOATING;

3.Tx的mode设置为:GPIO_Mode_AF_PP;

4、对串口模块进行初始化设置:

USART_InitStructure.USART_BaudRate = 9600;//波特率的设定

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//每个字有几位

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;//需要开启哪些mode

/*Configure USART1 */

USART_Init(USART1, &USART_InitStructure);//将以上的设定写入到寄存器中去。

5、是能发送和接收中断:

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

6、使能串口:

USART_Cmd(USART1, ENABLE);

7、因为是能了中断,所以在这些工作之前还需要对中断进行设定:

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;//待设定的中断通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中断的主优先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//中断的次优先级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//中断是能还是不使能

NVIC_Init(&NVIC_InitStructure);

设置完以上的7项,串口就可以正常的工作了。当然,开始的系统时钟什么的初始化还是要做的。不过和这个没关系,在此不再赘述。


关键字:STM32  单片机  串口 引用地址:STM32单片机串口的定义及应用方法

上一篇:stm32异步串口通讯配置过程
下一篇:STM32单片机SPI的使用原理解析

推荐阅读最新更新时间:2024-11-07 11:05

浮点数压栈--MCS-51单片机实用子程序
标号: FPUS 功能:浮点数压栈 入口条件:操作数在 中。 出口信息:操作数压入栈顶。 影响资源:A、R2、R3 堆栈需求: 5字节 FPUS: POP ACC ;将返回地址保存在R2R3中 MOV R2,A POP ACC MOV R3,A MOV A,@R0 ;将操作数压入堆栈 PUSH ACC INC R0 MOV A,@R0 PUSH ACC INC R0 MOV A,@R0 PUSH ACC DEC R0 DEC R0 MOV A,R3 ;将返回地址压入堆栈 PUSH ACC MOV A,R2 PUSH ACC RET ;返回主程序
[单片机]
单片机的数字滤波器设计
数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。 而在数据采集中存在着各种噪声。滤除噪声的方法有很多种,既有数字滤波器,也有模拟滤波器。这里我们采用了基于单片机和C语言来设计并开发数字滤波系统。 我们针对于单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的
[单片机]
STM32之五外部中断(下)
通过对外部中断理论的些许理解,这次我们利用两个按键key1和key2来控制led1和led2的亮灭,按key1进入key1的中断,控制对应的led亮灭,按key2进入key2的中断,控制相应的led的亮灭 同样,涉及到中断,我们要建立两个文件,exti.c及exti.h,首先来看看exti.c 用到中断,自然我们要用到stm32f10x_it.c函数,将中断响应函数放在里面,打开这个文件你会发现里面只是给出了部分中断函数,找来找去也没有我们需要的中断函数体,这时需要我们自己添加函数体,看下我添加的函数体: 但是这个函数名可不是随便起的,具体每个中断函数体的函数名怎么书写,我们可以打开startup_stm32f10x_hd.
[单片机]
<font color='red'>STM32</font>之五外部中断(下)
基于STM32的开源简易示波器项目
一、前言 该项目是基于正点原子精英板制作的一个简易示波器,可以读取信号的频率和幅值,并可以通过按键改变采样频率和控制屏幕的更新暂停。 二、硬件接线 将PA6与PA4相连,可观察到正弦波。 将PA6与PA5相连,可观察到三角波/噪声(默认三角波)。 KEY_UP控制波形的更新和暂停。 KEY_1降低采样率。 KEY_0提高采样率。 三、信号的采集 信号的采集主要是依靠ADC(通过定时器触发采样,与在定时器中断中开启一次采样的效果类似,以此来控制采样的间隔时间相同),然后通过DMA将所采集的数据从ADC的DR寄存器转移到一个变量中,此时完成一次采样。 由于设定采集一次完整的波形需要1024个点,即需要连续采集1024次才算一次
[单片机]
基于<font color='red'>STM32</font>的开源简易示波器项目
NUC1xx微控制器(MCU)的省电方式
  新唐科技的NUC1xx包含NUC101、NUC100、NUC120、NUC130和NUC140,是以ARM Cortex-M0为核心的32位微控制器(MCU),经由不同时钟的设定,最高可以达到50MHz的运作频率。然而在一般简单控制或系统负载较低时,CPU并不需要执行在最高的运行时钟下即可应付所需要的计算量。这时候,便可以利用系统时钟的控制来降低时钟,以达到省电的目的。   另一种情况是CPU因为等待下一个工作或只需要久久工作一次时,就可以先将CPU进入Idle或Power Down模式,等到一定的时间之后或是有特定的事件发生时,才被唤醒过来进行相关事件的处理。同时,如果系统内没有用到的系统模块,也可以将其关闭以节省不必要的
[单片机]
NUC1xx<font color='red'>微控制器</font>(<font color='red'>MCU</font>)的省电方式
基于DSP和STM32的电液伺服控制器设计
引言 伺服控制系统大部分都采用传统的硬件结构,控制算法比较固定,而且也无法实现不同工况下的高性能控制算法,难以满足现代工业的需求。现阶段迫切需要研制一种智能型、具有高可靠性、控制性能更加优秀的电液伺服系统。基于DSP与STM32的智能型伺服控制器具有软硬件结合程度更加紧密、系统的智能化程度更高、可实现多种控制策略的优势。本系统从实际的需求出发,结合精确数字PID控制算法和Fuzzy控制算法自身的优势,组合成Fuzzy—PID控制算法,根据偏差的大小范围选择合适的控制算法进行调节。 本设计将两款工控芯片——TI公司的浮点型DSPTMS320F28335和ST公司的ARM7升级版STM32F103RET6引入智能电液伺服系统,设计
[单片机]
基于DSP和<font color='red'>STM32</font>的电液伺服控制器设计
STM32单片机外部中断配置讲解
01 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平、低电平)、边沿变化(上升沿、下降沿)等。51单片机有5个中断源,其中有两个是外部中断,分别为INT0和INT1,INT0被分配在P3.2引脚,INT1被分配在P3.2引脚,也即是说如果使用51单片机的外部中断0,则必须将信号接在P3.2上,否则无效。 02 举例说明什么是中断 单片机在执行程序时有两种方式: 查询方式 中断方式 所谓查询方式就是单片机一遍一遍的扫描,查看所监视的目标有没有发生变化,是一种主动式的监视方法,用一个成语可以很客观的描述:守株待兔。 所谓中断方式就是单片机不主动去监视目标,而是目标主动通知单片机状态发
[单片机]
STM32笔记---DMA(USART)的演示
 这里有个小小的例子,来演示DMA模块与系统程序并行工作。   用串口以低波特率发送一个10K的数据,花费近10s时间,此时按照以往方法,CPU要不断等待数据发送、送数据;或者送数据、进中断、送数据,处理起来比较消耗时间。   使用了DMA功能以后,用户程序中只需配置好DMA,开启传输后,再也不需要操心,10K数据完成后会有标志位或中断产生,期间可以做任何想做的事,非常方便。   这个是相应的代码例子,基于STM32F103VBT6 /****************************************************************************** * 本文件实现串口发送功能(通过重构
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved