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);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【方法】如何在ZIP文件中添加或删除文件?

ZIP文件是我们在日常工作中常用的压缩格式。有时候,我们需要在已有的ZIP文件中添加或删除文件。下面来看看具体如何操作。 首先,我们要确保安装了ZIP文件管理软件,如WinRAR、7-Zip或Windows自带的文件资源管理器。 添加文件: 使…

redhat-devtoolset备忘

参考: User Guide Red Hat Developer Toolset 12 | Red Hat Customer Portal https://access.redhat.com/documentation/en-us/red_hat_developer_toolset/12/html-single/user_guide/index Red Hat Devtoolset 是 Red Hat 提供的一组开发工具集合,主要用…

1994年美国人口普查数据 分类预测与集成学习

对于分类预测学习任务,从指定的数据源读取数据,对数据进行必要的处理,选取合适的特征,构造分类模型,确定一个人的年收入是否超过50K。 数据来源:1994年美国人口普查数据库。数据存放在data目录中&#xff0…

【K8s】专题五(5):Kubernetes 配置之热更新工具 Reloader

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、基本介绍 二、工作原理 三、部署方法 四、使用方法 一、基本介绍 Reloader 是一个用…

基于STM32和人工智能的智能农业监测系统

目录 引言环境准备智能农业监测系统基础代码实现:实现智能农业监测系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能农业管理与优化问题解决方案与优化收尾与总结 1. 引言 智能农业监测系统通过结合STM32嵌…

手机照片同步到群辉NAS

手机中最宝贵的数据莫过于“照片”,这些包含美好回忆的数字信息是不能丢失的。NAS的作用就是存储,其中最重要的一项功能就是手机照片的同步。 在群辉NAS丰富的套件中,“Synology Photos”就是解决这个功能,今天我们来看看如何操作。 一、安装套件 打开群晖套件中心→所有…

【拉曼光谱数据处理2024】拉曼数据处理的主要问题和常见方法

一、主要问题分类与解决方法比较 二、常见问题在光谱图上的显示 1、从上到下依次是 理想光谱 理想光谱宇宙尖峰 理想光谱高斯噪声 理想光谱S型背景噪声 理想光谱尖峰高斯噪声S型背景噪声

OS复习笔记ch11-1

外围设备的管理和磁盘调度 外围设备 从CPU的角度来看,外设有几个比较重要的I/O接口(interfaces) 状态reg:向CPU报告设备的状态(忙碌/空闲)命令reg:接收CPU命令,存储 CPU 需要执行的…

低温环氧胶在指纹模组封装中的应用有哪些?

低温环氧胶在指纹模组封装中的应用有哪些? 低温环氧胶在指纹模组封装中的应用点主要包括以下几点: 金属环/框与FPC基板固定:低温固化环氧胶被推荐用于固定金属环或框到柔性印刷电路板(FPC)基板上,确保它们之间有稳固的连接。 传感…

RTX5全家桶源码综合模板发布,含FreeRTOS内核版本,将其打造成直接面向实际项目应用的综合框架(2024-06-19)

【说明】 1、RTX5全家桶的优势就是简单易用,初学的话,上手很快,稳定性也是杠杠的,且容易做稳定。 2、同时RTX5也是有汽车级,工业级,医疗和铁路安全认证,只是安全级别比ThreadX要稍微低些。 3…

Easyui Datagrid 解决页面加载重复请求2次后端问题

现象 在页面刚刚打开时,页面加载完毕,显示查询数据,连续请求网络2次, 第一次是只携带了 分页参数; 第二次携带分页和查询参数 问题出现原因 html代码中利用class声明了datagrid,导致easyUI解析class代…

安泰电子:功率放大器的要求是什么

功率放大器是一种用于增强电信号功率的重要设备,在各种应用领域发挥着关键作用。对于功率放大器来说,有一些基本的要求需要满足,以确保其正常工作和提供稳定可靠的功率放大功能。下面将介绍功率放大器的几个主要要求。 高效率:功率…

electron下载失败(electron如何切换镜像源)

打开: 或者: C:\Users\用户名\.npmrc 添加: electron_mirrorhttps://npmmirror.com/mirrors/electron/ 到文件中,保存 方法二: npm config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/ ELECTR…

如何低成本试错渠道?Xinstall App来源统计,让您的推广更高效!

随着互联网流量的不断变化,App推广与运营面临着前所未有的挑战。如何在多变的市场环境下迅速搭建起满足用户需求的运营体系,成为众多企业关注的焦点。今天,我们将为您介绍一款强大的工具——Xinstall,它能帮助您精准统计App来源&a…

面试专区|【62道Redis高频题整理(附答案背诵版)】

什么是Redis? Redis是一个高性能的开源内存数据库系统,它使用键值对存储数据,并支持多种数据结构,如字符串、哈希、列表、集合和有序集合。与传统关系型数据库不同,Redis将数据存储在内存中,以实现快速读写操作。同时…

CPU核心是如何影响VPS性能的?

为什么VPS对于各种类型和规模的网站和应用程序来说都是非常出色的解决方案? 首先,它比其他类型的托管具有许多优势,但也许它最大的优势是它可以以合适的价格为您提供合适的性能。 然而,只有当您满足所需的规格时它才会这样做。 …

JAVA小知识27:异常与异常处理全解

一、异常 异常就是代表程序出现了问题,像我们之前学数组的时候碰到的数组越界异常,以及空指针异常等等都属于开发中经常能碰到的异常。 我们学习异常不是为了在以后中避免异常,而是学习碰到了异常以后该如何的处理。 1.1、异常的分类 Java…

【Python科研】如何使用Python计算年度和季节的平均降水栅格数据并进行批量裁剪

目录 1.环境准备 2.设置文件路径 3.读取矢量数据 4.定义年份和季节 5.创建输出文件夹 6.裁剪栅格数据的函数 7.计算和保存年度平均降水数据 8.计算和保存季节平均降水数据 9.结论 10.完整代码 本次分享内容中,我们将介绍如何使用Python计算和裁剪年度和季…

复合构件之消息对话框

代码; #include <gtk-2.0/gtk/gtk.h> static void font_dialog_response(GtkFontSelectionDialog *dialog,gint response,gpointer data)// 处理字体选择对话框按钮按下事件 {gchar *font;GtkWidget *message;switch (response) {case (GTK_RESPONSE_APPLY):case (GTK_R…

ClipArt ETC - 典雅的剪贴画网站

文章目录 ClipArt ETCClippix佛罗里达教学技术中心课堂数字内容 ClipArt ETC 网站地址&#xff1a; https://etc.usf.edu/clipart/ ClipArt ETC为学生和教师提供了超过71,500件高质量的教育剪贴画。 每个插图都有图像大小的选择以及学校项目中正确引用的完整源信息。 所有图像…