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

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.mzph.cn/diannao/29375.shtml

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

相关文章

入门三.HTB--Dancing(6.18)

大佬 https://www.cnblogs.com/Hekeats-L/p/16535920.html 任务1 SMB 即Server Message Block(服务器消息块),是一种文件共享协议。当文件原件在你的A电脑上,而你想在局域网下用你的手机、iPad或是另一台电脑来访问A电脑上的该文…

【AI工具】探索创意与效率:xs.tools 网站介绍

在这个数字化时代,工具的创新和效率对我们的日常工作和生活至关重要。"xs.tools" 网站是一个汇集了众多有趣且实用的小工具的平台,它不仅帮助用户快速找到所需的工具,还能激发灵感,提升创造力。 一、网站概览 "xs.tools" 提供了一个简洁而直观的界面…

Centos7如何扩容未做lvm的GPT硬盘

背景:一台根分区为2.5T(已转换GPT格式)的虚拟机使用率达到97%,需要扩容,但是又没做lvm 通过平台新增容量1.5T,如下可看到 安装growpart准备扩容: yum install cloud-utils-growpart -y 执行命令growpart报错&#xff…

ChatGPT付费创作系统V3.0.2独立版 WEB+H5+小程序端 (H5端界面美化+Pika视频作品广场+SunoAI 文生歌)系统部署教程

播播资源GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序,是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。当前全民热议ChatGPT,流量超级大,引流不要太简单!一键下单即可拥有自己的GPT!无限…

6.华为路由器与二层交换机连接单臂路由划分vlan实现互通

目的:华为路由器与二层交换机连接使用单臂路由使PC1 PC2不通vlan互通 AR1配置 [Huawei]int g0/0/0.10 [Huawei-GigabitEthernet0/0/0.10]dot1q termination vid 10 [Huawei-GigabitEthernet0/0/0.10]ip address 10.10.10.1 24 [Huawei-GigabitEthernet0/0/0.10]arp…

HarmonyOS开发日记 :自定义节点,实现 UI 组件 动态创建、更新

引言 UI动态操作包含组件的动态创建、卸载、更新等相关操作。 通过组件预创建,可以满足开发者在非build生命周期中进行组件创建,创建后的组件可以进行属性设置、布局计算等操作。之后在页面加载时进行使用,可以极大提升页面响应速度。 UI …

【CVPR2024】面向StableDiffusion的编辑算法FreePromptEditing,提升图像编辑效果

近日,阿里云人工智能平台PAI与华南理工大学贾奎教授团队合作在深度学习顶级会议 CVPR2024 上发表 FPE(Free-Prompt-Editing) 算法,这是一种面向StableDiffusion的图像编辑算法。在这篇论文中,StableDiffusion可用于实现图像编辑的本质被挖掘&…

28. 空间滤波器

导论: 几何光线追迹是光线传播的一种不完善描述。严格地说,光束传播是一个相干过程。当波前通过自由空间或光学介质时,波前会发生相干干涉。这种相干传播的建模包括物理光学领域。 物理光学传播(POP)是zemax的一项强…

ssl证书能认证多少个域名

SSL证书能认证的域名数量取决于SSL证书的类型。不同类型的SSL证书支持不同数量的域名: SSL证书,作为网络安全的基石之一,起着至关重要的作用。它通过为网站提供加密连接,确保数据传输的安全性和完整性,同时验证网站的真…

Ceph: vdbench 测试ceph存储rbd块设备

目录 2.搭建ceph 3.vdbench环境 准备 笔记本架构:x86 i5 8 代 虚拟化软件:virtualBox 7.0 操作系统:CentOS Linux release 7.9.2009 (Core) 测试虚拟机操作系统:CentOS Linux release 7.9.2009 (Core) 节点 外部网络 内部网…

qml实现界面的切换

自定义组件中是可以直接使用main界面中根节点这个层级中声明的所有id MyRect01.qml import QtQuick 2.0 import QtQuick.Controls 2.0 Rectangle{id:rec01width:450height: 200color: "green"Button{id:btn01text: "dian ji"onClicked: {yRec01.visiblefa…

003 AOP介绍

文章目录 什么是AOP为什么用AOPAOP相关术语介绍AOP实现之AspectJ(了解)AOP实现之Spring AOP(了解)JDK动态代理Cglib动态代理 什么是AOP 在软件业中,AOP为Aspect Oriented Programming的缩写,意为面向切面编程作用:在不修改目标类代码的前提下…

数仓开发那些事_番外

一位神州的正式员工(没错,就是之前文章中出现的实习生):一闪,你今年涨工资了吗? 一闪:mad,一年辛苦到头只涨了500米 神州员工:你去年绩效不是优秀吗,怎么就涨…

【机器学习】第10章 聚类算法

一、概念 1.聚类 (1)是无监督学习,其实无监督学习就是无中生有,不给你标准答案(标签啊啥的),然后让你自己来。 (2)聚类就是这样,让机器自己根据相似特征把相…

AOSP刷Fart8脱壳机安装及使用

我的电脑硬件不支持对AOSP源码进行编译,所以只能用别人编译好的刷机包进行刷机。使用的刷机包是luffy 8期 day37 下的v5目录下的taimen包,这个刷机包里面 的AOSP是 UserDebug 版本,已经实现的功能有: - root特征隐藏 - Fart特征隐…

【ArcGIS微课1000例】0120:ArcGIS批量修改符号的样式(轮廓)

ArcGIS可以批量修改符号的样式,如样式、填充颜色、轮廓等等。 文章目录 一、加载实验数据二、土地利用符号化三、批量修改符号样式四、注意事项一、加载实验数据 订阅专栏后,从私信查收专栏配套的完整实验数据包,打开0120.rar中的土地利用数据,如下图所示: 查看属性表: …

事务所管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客户管理,评论管理,基础数据管理,公告信息管理 客户账户功能包括:系统首页,个人中心,律师管理&#xff0…

下载lombok.jar包,简化类的代码

Download (projectlombok.org) 去这个网站下载lombok.jar包 打开这个包文件的位置,拖到项目lib文件夹: 在这里右键添加为库(Add as library)。 添加这三个注解即可,类里面不需要其他东西了

【代码随想录】【算法训练营】【第41天】 [416]分割等和子集

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 40,休息,休息一下~ day 41,艰难的周一~ 题目详情 [416] 分割等和子集 题目描述 416 分割等和子集 解题思路 前提:是否可以将数组分为和相等的…

NPM 包管理器简介

目录 官方数据 npm 简介 包 安装所有依赖 安装单个包 更新包 版本控制 运行任务 官方数据 包量高达310w, 6月份的第三周下载量高达600亿,5月份下载量更是高达2473亿,这惊人的数字无外乎体现当今互联网的活跃程度和仍旧处于高速发展阶…