当前位置: 首页 > news >正文

十、STM32端口复用重映射

目录

1.什么是端口复用?

2.如何配置端口复用?

3.什么是端口重映射 ?

4.什么是部分重映射和完全重映射?

5.重映射的配置过程


1.什么是端口复用?

        STM32有很多外设,外设的外部引脚与GPIO复用。也就是说一个GPIO可以重复使用外设的引脚,这个GPIO作为内置外设使用的时候,就叫做复用。

例如:

  • GPIOA9       可以作为普通GPIO使用,引脚复用为串口1的发送
  • GPIOA10     可以作为普通GPIO使用,引脚复用为串口1的接收
  • GPIOA1       可以作为普通GPIO使用,引脚复用为外部中断

举例:

        串口1的发送引脚为PA9、PA10。我们把这两个引脚不用做GPIO,而复用为串口1的发送和接收引脚,叫做端口复用。

2.如何配置端口复用?

端口服复用配置过程:(以USART1:PA9、PA10串口为例)

  1. 配置GPIO时钟:
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,  ENABLE);//开启GPIOA时钟
  2. 配置USART1时钟:
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,  ENABLE);//开启串口的时钟
  3. 配置相对用的GPIO模式:查询STM32中文参考手册
    	//2、配置GPIO的结构体。//配置PA9 TXgpio_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出gpio_initStructure.GPIO_Pin = GPIO_Pin_9;gpio_initStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_initStructure);//配置PA10 RXgpio_initStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//复用推挽输出gpio_initStructure.GPIO_Pin = GPIO_Pin_10;gpio_initStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_initStructure);

3.什么是端口重映射 ?

        每个外设都有若干个输入输出引脚,一般这些引脚也都是固定不变的,但是为了让开发工程师更好的安排引脚的功能和走向,引入重映射功能。也就是一个外设的引脚除了具有默认的端口外,也还可以设置重映像寄存器来把这个外设映射到其他GPIO端口。方便硬件工程师布线,减少干扰。

4.什么是部分重映射和完全重映射?

部分重映射:功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。

完全重映射:功能外设的所有引脚都是重新映射。

5.重映射的配置过程

以串口1为例:

  1. 使能GPIO引脚(重映射后的GPIO引脚)
  2. 使能功能外设
  3. 使能APIO时钟,重映射必须使能AFIO时钟
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO,  ENABLE); //开启复用时钟
  4. 开启重映射:
    void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);

http://www.lryc.cn/news/4459.html

相关文章:

  • 【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号
  • Spring基础知识
  • proxy代理与reflect反射
  • 机器视觉 多模态学习11篇经典论文代码以及解读
  • Redis过期删除策略
  • 数据流分析之def-use链分析
  • 【0175】【内存上下文】如何利用context_freelists[]来彻底释放MemoryContext中分配的所有内存(8 - 2)
  • Redis实战—黑马点评(一) 登录篇
  • 建造者模式-搭建Qt窗口案例
  • *from . import _imaging as core : ImportError: DLL load failed: 找不到指定的模块
  • 关于尚硅谷Hadoop-报错解决方案日志
  • 前端高频面试题-HTML和CSS篇(二)
  • 神经网络损失函数分布可视化神器
  • ansible的部署与命令模块
  • 开发人员与测试人员关系的理解
  • 直面原理:5 张图彻底了解 Android TextToSpeech 机制
  • Ruby Socket 编程
  • Vue3+ElementPlus+koa2实现本地图片的上传
  • 常见漏洞之 Fastjson
  • 绕过Nginx Host限制
  • Visual Studio 2022 常用快捷键,记录一下别忘记~
  • 软件测试回顾---重点知识
  • 2D图像处理:2D Shape_Base_Matching_缩放_旋转_ICP_显示ROI
  • HTTP、HTTPS
  • 计算机网络之http03:HTTPS RSA握手解析
  • 一款针对EF Core轻量级分表分库、读写分离的开源项目
  • Linux环境变量讲解
  • iptables和nftables的使用
  • 中小学信息学相关编程比赛清单及报名网站汇总(C++类)
  • 06Makefile