嵌入式02 STM32 实验01 端口复用和重映射

内设与外设:

  端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设?

  内设:单片机内部集成的功能一般包括:串口模块、SPI模块(Serial Peripheral Interface  串行外设接口)、I2C模块(Philips公司开发的一种简单、双向二线制同步串行总线)、A/D模块(模数转换器)、PWM模块(Pulse Width Modulation  脉冲宽度调制)、CAN模块(Controller Area Network  控制器局域网络)、EEPROM(Electrically Erasable Programmable read only memory  带电可擦可编程只写存储器)、比较器模块等等,都是集成在单片机芯片的内部,有相应的寄存器控制,可以通过指令直接控制

  外设:单片机外部的外围功能模块,比如键盘控制芯片,液晶(OLED、LCD)、无线模块等等,外设可通过单片机的I/O、SPI、I2C等总线控制

端口复用:

  STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个内置外设使用的时候,此时是不可以作为外部外设使用的,此时这个端口就叫做被复用了。

  比如一个端口可以作为输入输出(使能端口时钟),同时它也可以作为串口使用(使能串口时钟),此时就说明这个端口被复用了

  端口复用是重点,只要使用stm32就要用到外设,外设是与gpio引脚共用(复用)的,即某些引脚既可以单纯作为输入输出,又可以作为具有一定功能的内设(如ADC, 串口等等)的引脚端口。

实现方法:

  1、使能端口时钟

  2、使能复用功能的时钟

  3、按照数据手册配置端口模式

 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    //①IO时钟使能
 2
 3 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);  //②外设时钟使能
 4
 5 //③初始化IO为对应的模式
 6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                //PA.9
 7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 8 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
 9 GPIO_Init(GPIOA, &GPIO_InitStructure);
10
11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                     //PA10 PA.10 浮空输入
12 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //浮空输入
13 GPIO_Init(GPIOA, &GPIO_InitStructure);  

端口重映射:

  为了使不同器件封装的外设IO功能数量达到最优,可以把一些复用功能重新映射到其它的一些引脚上,也就是该端口很忙,你找它的徒弟,它也可以完成师傅干的事。

  STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能。我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好的安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。

  打个比方说,串口1的TX,RX引脚是在PA9,和PA10端口,但是同时它有两个映射端口PB6,PB7。开启重映射,PB6和PB7同样可以使用串口1。

  也就是说把管脚的外设功能映射到另一个管脚,但不是可以随便映射的,具体看每个芯片的参考手册

实现方法:

  1、使能重映射后的IO口

  2、使能功能外设的时钟

  3、使能AFIO时钟

  4、依据数据手册设置GPIO口数据

  5、开启重映射

 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO时钟使能
 2
 3 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外设时钟使能
 4 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);③复用时钟使能
 5
 6 //④初始化IO为对应的模式
 7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//复用推挽输出
 8 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
10 GPIO_Init(GPIOA, &GPIO_InitStructure);
11
12 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空输入
13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
14 GPIO_Init(GPIOA, &GPIO_InitStructure);
15
16 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//开启重映射

原文地址:https://www.cnblogs.com/ksht-wdyx/p/11594744.html

时间: 2024-10-24 23:29:52

嵌入式02 STM32 实验01 端口复用和重映射的相关文章

端口复用和重映射

部分重映射和完全重映射 与开启重映射函数的函数的第一个参数有关.

STM32管教复用与重映射关系

摘自:http://blog.csdn.net/lincheng15/article/details/51789093 概括一下:复用就是一个引脚有几个功能,1.做普通IO输入输出 2.其他外设的输入输出(比如I2C,TIM,SPI等等),这就是复用. 重映射就是将引脚功能重新定义到其他引脚,例如PA9是USART1-TX默认的管脚,但是现在PA9用做它用了,那可以将USART1-TX重新映射到PB6,当然这种映射不是随意的想映射到哪个脚就哪个脚,芯片内部已经固定了只能映射到固定的地方 MCU复

(十)stm32 GPIO口复用,重映射 RCC_APB2Periph_AFIO

什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用 需要用到外设的重映射功能时才需要使能AFIO的时钟 外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1.2.3,它们是用来选择EXTIx外部中断的输入脚之用 举例:重映射USART2 USART2的TX/RX在PA.2/3 PA.2已经被Timer2的channel3使用需要把USART2的TX/RX重映射到PD.5/6库函数的调用 (1)使能被重新映射到的I/O端口时钟 RCC_APB2Perip

嵌入式02 STM32 外部中断实验

一.中断 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理事件的一个程序.该程序执行完成后,CPU接着执行被暂停的程序.这个过程称为中断.(我正在捉泥鳅,但是我妈喊我回家吃饭,我必须回家吃饭,回家途中,发现泥鳅没带,回去把泥鳅带回家,然后吃完饭继续捉泥鳅!!!) 中断是CPU处理外部突发事件的一个重要技术.引起中断的原因或者说发出中断请求的来源叫做中断源.根据中断源的不同,可以分为硬件中断和软件中断两大类,有了中断,系统可以更好更快的利用有限的系统资源解决系统响应速度和运行效率的一

嵌入式 02 STM32 09 独立/窗口看门狗实验

一.独立看门狗和窗口看门狗 看门狗:单片机系统在外界的干扰下会出现程序跑飞的现象导致死循环,或者崩溃,看门狗电路就是为了避免这种情况的发生,看门狗的作用就是在一定的事件内(通过计数器实现)若没有收到喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号) 独立看门狗IWDG:独立于系统之外,因为有独立时钟30-60KHz,所以是不受系统影响的系统故障检测器,主要用于监视硬件错误. 窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同.如果系统时钟不走了,这个狗也就失去了作用

嵌入式 02 STM32 07串口通信

STM32串口通信(F1系列包含3个USART和2个UART) 一.单片机与PC机串行通信研究目的和意义: 单片机自诞生以来以其性能稳定,价格低廉.功能强大.在智能仪器.工业装备以及日用电子消费产品中得到了广泛的应用.在单片机的输入输出控制中,除直接接上小键盘和LCD显示屏等方法外,一般都通过串口和上位机PC进行通信.这样不仅能够实现远程控制,而且能够利用PC机强大的数据处理功能以及友好的控制界面.在一般的利用PC机对单片机进行控制的场合,都是采用操作系统作为上位机的平台,其优点是界面友好,编程

企业边界网络设备的一般配置:ACL、端口复用(PAT)、端口映射

一.概述: 企业的边界网络设备一般是路由器或者多层交换机,主要实现的功能如下:(1)实现内网部分设备访问外网:(2)客户从公网访问企业内网的Web服务器等:(3)运维人员从外网访问企业内部的部分设备进行远程维护.其中第一项功能需求通过ACL和端口复用(PAT)技术实现,第二.三项功能需求通过端口映射技术实现. 本文结合拓扑图讲述上述几项功能的实现技术及具体配置. 二.拓扑图说明: 如上图所示,绿色背景部分为企业内部网络环境(COMPANY-Network),蓝色背景部分为运营商网络环境(ISP-

Linux网络编程——端口复用(多个套接字绑定同一个端口)

在<绑定( bind )端口需要注意的问题>提到:一个网络应用程序只能绑定一个端口( 一个套接字只能绑定一个端口 ). 实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口( 占用了 8000 ),这时候,别的套接字就无法使用这个端口( 8000 ), 验证例子如下: [objc] view plaincopy #include <stdio.h> #include <stdlib.h> #include <string.h> #inclu

TCP套接字端口复用SO_REUSEADDR

下面建立的套接字都是tcp套接字 1.进程创建监听套接字socket1,邦定一个指定端口,并接受了若干连接.那么进程创建另外一个套接口socket2,并试图邦定同一个端口时候,bind错误返回“Address already in use”(即使使用了SO_REUSEADDR). 2.进程创建监听套接字,邦定一个指定端口,并接受了若干连接,为每个连接创建子进程为连接服务.杀死监听套接字所在进程,然后重新启动.重新启动的进程调用bind重新建立监听套接字.这次邦定只有在bind前指定了SO_REU