STM32学习笔记(六)--引脚重映射详解

news2025/2/26 13:37:59

STM32F103C8T6引脚定义:

在STM32微控制器中,外设引脚的复用功能(Alternate Function,AF)有时会出现冲突,例如当USART2_CTS和TIM2_CH1同时需要使用相同的引脚时。此时,可以通过引脚重映射功能(Remapping)来解决这个问题。

引脚重映射(Remapping)详解

引脚重映射是STM32提供的一种功能,用于改变外设信号的GPIO引脚,以避免引脚冲突。具体操作如下:

1. 查找引脚重映射表

在STM32的参考手册(Reference Manual)和数据手册(Datasheet)中,有详细的引脚定义表,包含默认复用功能和重定义(重映射)功能。

2. 重映射步骤

以下是一个将TIM2_CH1从PA0重映射到PA15的示例:

初始化外设时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 使能AFIO时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟

配置GPIO引脚

GPIO_InitTypeDef GPIO_InitStructure;

// 配置PA15为复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

重映射TIM2_CH1

// 使用AFIO来重映射TIM2_CH1到PA15
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);

配置定时器参数

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseStructure.TIM_Period = 999;
TIM_TimeBaseStructure.TIM_Prescaler = 71;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 499;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);

TIM_Cmd(TIM2, ENABLE);

配置USART2_CTS引脚

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // PA0配置为USART2_CTS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

注意事项

  1. 确认重映射功能支持:并非所有引脚都支持重映射,请参考具体型号的参考手册。
  2. 配置正确的AFIO寄存器:不同的引脚重映射配置需要修改不同的AFIO寄存器。
  3. 检查其他外设冲突:确保重映射后的引脚不会与其他已使用的外设产生新的冲突。

总得来说只需要注意如下代码即可,至于配置还是老一套。

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
//  下面这一行主要是观察该引脚的主功能是什么 如果是JTDI之类的加下面这句
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1841755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI播客下载:The Gradient-AI前沿见解

The Gradient 是一个致力于让更多人轻松了解人工智能,并促进人工智能社区内讨论的组织。我们目前开展的项目包括 The Gradient 杂志、The Gradient 播客、The Update 通讯以及 Mastodon 实例 Sigmoid Social。 我们是一个由来自不同机构和公司的研究生、研究人员及…

三十分钟学会RabbitMQ

1、初识MQ 1.1 MQ是什么? MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中…

Wills Room Environment Dormitory Room Environment

有126个独特的网格。包括所有展示的资产和优质资产。具有良好的细节水平,并针对Gameready项目进行了优化。 艺术家Jonjo Hemmens创造的环境 如果想填充你的游戏环境或任何类型的虚拟制作级别,这里有一个包,你可以获得并使用它来得到高质量的视觉效果和优化的资产。 下载:​…

Unicorn批量模拟执行爆破实践

实践题目:CFI-CTF 2018 Automated Reversing 代码与附件地址:https://github.com/Airrcat/unicorn_loader 目标附件如: 每份附件的代码大致如下: 简单来说,程序会接收命令行参数并作一个字节的运算后与一固定值的字…

转型技术管理:九大步骤解锁高效管理新境界

文章目录 引言一、寻求反馈二、从员工的角度看待问题三、总览全局四、管理自己的情绪五、赞赏员工的出色工作六、在人前支持员工七、管理自己的职业生涯八、认识到自己也许存在偏见,与不同于自己的人交流九、在工作中建立信任和沟通总结 引言 在快速变化的科技浪潮…

SparkSQL的分布式执行引擎-Thrift服务:学习总结(第七天)

系列文章目录 SparkSQL的分布式执行引擎 1、启动Thrift服务 2、beeline连接Thrift服务 3、开发工具连接Thrift服务 4、控制台编写SQL代码 文章目录 系列文章目录前言一、SparkSQL的分布式执行引擎(了解)1、启动Thrift服务2、beeline连接Thrift服务3、开发工具连接Thrift服务4、…

opencascade AIS_InteractiveContext源码学习相关枚举 AIS_SelectionScheme AIS_StatusOfPick

AIS_SelectionScheme 枚举 AIS_SelectionScheme 设置交互上下文中的选择方案。 枚举值: AIS_SelectionScheme_UNKNOWN 未定义的方案 AIS_SelectionScheme_Replace 清除当前选择并选择检测到的对象 AIS_SelectionScheme_Add 将检测到的对象添加到当前选择 AIS_…

【Kubernetes项目部署】k8s集群+高可用、负载均衡+防火墙

项目架构图 (1)部署 kubernetes 集群 详见:http://t.csdnimg.cn/RLveS (2) 在 Kubernetes 环境中,通过yaml文件的方式,创建2个Nginx Pod分别放置在两个不同的节点上; Pod使用hostP…

智慧学习实践系统的设计

管理员账户功能包括:系统首页,个人中心,企业管理,任务管理,公告管理,菜单管理,用户管理,基础数据管理 企业账户功能包括:系统首页,个人中心,任务…

电商API接口详述:涵盖订单、库存等多功能接口介绍

电商商家自研管理系统,线下ERP系统或WMS系统想要接入电商平台订单打单发货,通过点三电商API可以一键对接多个电商平台,帮助商家、ERP/WMS服务商快速开发电商模块,实现电商业务管理功能,那么点三电商API接口有哪些可用接…

省市区下拉选择:3个el-select(附完整代码+json)

目录 直接上做出的效果: 页面代码: 使用click.native: data及引入: 初始化: methods: JSON: 示例结构: 1.code.json 2.pca-code.json 回显: 视频效果: 直接上做出…

盘点下常见 HDFS JournalNode 异常的问题原因和修复方法

盘点下常见 HDFS JournalNode 异常的问题原因和修复方法 最近在多个客户现场以及公司内部环境,都遇到了因为 JournalNode 异常导致 HDFS 服务不可用的问题,在此总结下相关知识。 1 HDFS HA 高可用和 JournalNode 概述 HDFS namenode 有 SPOF 单点故障…

MS3121地隔离放大器

MS3121 是一款应用于车载音频系统的地隔离放大 器。芯片可以很好地解决汽车音频系统中的绕线电阻问 题,以及由车载电子设备带来的噪声问题。另外,芯片 所需要的外围电容小,便于系统的集成。注意,芯片的 地电位需要和后级音频功…

Mac数据如何恢复?3 款最佳 Mac 恢复软件

如果您认为 Mac 上已删除的文件永远丢失了,那您就大错特错了!实际上,即使您清空了 Mac 上的垃圾箱,也有许多解决方案可以帮助您恢复已删除的文件。最好的解决方案之一是 Mac 恢复删除软件。最好的Mac 恢复删除应用程序可以轻松准确…

docker部署ClamAV集成java和python实现文件病毒扫描

介绍 官方文档:https://docs.clamav.net/manual/Signatures/DatabaseInfo.html ClamAV 是一个开源的反病毒引擎,它由多个模块组成,负责不同的任务处理。以下是 ClamAV 的主要模块和它们的功能: clamd:clamd 是 Clam…

Cookie、Session、Token的关系和区别

关系 Session与Cookie:Session通常依赖于Cookie来工作。当服务器为客户端创建一个Session时,它会在服务器上存储与客户端相关的信息,并将一个唯一的SessionID通过Cookie发送给客户端。客户端在后续的请求中会携带这个Cookie(包含…

视频监控管理平台的日志功能的重要性

日志功能的重要性 视频监控平台在日常工作生活中越来越重要,具有完备的平台日志,不仅可以增强视频监控系统的自身安全性,还能在更大程度上保障社会的安全与稳定。 (一)安全保障 视频监控平台作为安全防护…

流媒体学习之路(WebRTC)——音频NackTracker优化思路(8)

流媒体学习之路(WebRTC)——音频NackTracker优化思路(8) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实…

C51学习归纳13 --- AD/DA转换

AD/DA转换实现了计算机和模拟信号的连接,扩展了计算机的应用场景,为模拟信号数字化提供了底层支持。 AD转换通常是多个输入通道,使用多路选择器连接到AD开关,实现AD多路复用的目的,提高利用率。 AD/DA转换可以使用串口…

电脑怎么卸载软件?多个方法合集(2024年新版)

在电脑的日常使用中,我们经常需要安装各种软件来满足不同的需求,但随着时间的推移,可能会出现一些软件不再需要或需要更换的情况。此时,及时从电脑上卸载这些不必要的软件是非常重要的。它不仅可以释放硬盘空间,还可以…