关于stm32的复用和重映射问题

目录

    • 需求
    • IO口的复用和重映射
    • 使用
      • 复用
      • 复用加重映射
    • 总结
      • 参考资料

需求

一开始使用stm32c8t6,想实现pwm输出,但是原电路固定在芯片的引脚PB10和PB11上,查看了下引脚的功能,需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。

IO口的复用和重映射

IO口使用可分为两种情况:
1.正常功能。正常使用,开启GPIO时钟使用。
2.复用功能。使用复用功能,将改IO引脚作为另外的ADC、PWM定时器等引脚使用。

复用功能有可以分为三种情况:没有重映射、部分重映射、完全重映射

复用功能的使用的目的是为了在有限的引脚的情况下可以充分的使用各种外设,定时器、串口等等。
总之就是在复用的情况下,原来的引脚可以作为另一种功能的引脚使用。
重映射就是在复用情况下, 可以把一些复用功能重新映射到其他一些引脚上,也就是充当另一个外设功能引脚使用。当然,重映射也不是随便映射的,是芯片设计好的时候就已经固定了,stm32的重映射可以查看《《STM32 中文参考手册》的P116页,8.3通用和复用功能。

而复用重映射的目的都是为了能充分利用有限的引脚资源去实现更多的外设功能。

通过初步查看数据手册,发现PB10和PB11两个引脚如下图所示,可以发现,默认复用的时候可以作为IIC或者usart3使用,而在重定义功能(完全重映射,说法不同)的情况下, 可以作为定时器2的通道3和通道4使用。

复用

使用

复用

首先介绍复用功能的使用,复用功能使用比较简单,开启复用时钟即可。

在这里插入图片描述

查看手册可以看到复用开启,没有开启重映像的时候,就是串口3.

//开启io口时钟和定时器时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
//USART1_TX PB10 复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
//USART1_RX PB11 浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB11
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure);

这样PB10和PB11就可以当串口3进行正常使用了。

复用加重映射

由于我需要使用定时器2通道3实现PWM输出。所以需要用到重映射。
在这里插入图片描述

由上图可以看到,定时器2通道3的部分重映射和完全重映射都是同一个引脚也就是实现的效果是一样的。
对于定时器2通道2部分重映射和完全重映射就是不同的引脚了。
所谓部分重映射就是部分管脚和默认的是一样的,而部分管脚是重新映射到其他管脚。而完全重
映射就是所有管脚都重新映射到其他管脚。

首先复用肯定需要使能IO口和复用时钟。

//开启io口时钟和定时器2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//开启复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//开启重映射
//void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);
//对PB10进行初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

在这里插入图片描述

其中核心就是重映射函数GPIO_PinRemapConfig,第一个参数为重映射引脚选择,另一个为使能参数。
可以在文件“ stm32f10x_gpio.h”中看到定义的宏定义中关于定时器2的三个重映射定义,分别和芯片手册中提到的三种重映射相对应,对于定时器2通道2,分别是部分重映射1–GPIO_PartialRemap1_TIM2,也就是重映射到PB3,部分重映射2–GPIO_PartialRemap2_TIM2,重映射到PA1,完全重映射–GPIO_FullRemap_TIM2,重映射到PB3。
而对于通道3,部分重映射2和完全重映射都是相同的,也就是这两个效果会相同(当然在不考虑其他引脚的影响下)。这样我们就将定时器2通道3引脚映射到PB10下,但是在实际使用的时候,发现失败了,没有达到想要的效果,目前来看的原因是我用的C8T6是36脚的封装,而手册重映射下面提到,重映像不适用于 36 脚的封装

所以在使用的过程中一定要参考芯片手册,同时也要注意看注意事项,小容量小芯片可能大多数重映射功能都没法使用。

总结

复用和重映射的使用其实在库函数开发中就是两个函数的调用,但是需要注意的是需要去查看手册,复用的引脚是对应是哪个IO口,重映射对应的引脚是哪个,查阅好手册,确保芯片有重映射功能,就可以使用了。以上就是全部内容了,欢迎大家在评论区留言。

参考资料

stm32F103芯片手册和参考手册如下:

链接:https://pan.baidu.com/s/1v0S3ntMrII0HZsdbladByg?pwd=z6o1
提取码:z6o1

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

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

相关文章

PMP应考小技巧有哪些?

首先,制定合理的学习计划。将备考过程分解为小目标,并为每个目标设定截止日期。这样可以帮助我们有条不紊地进行学习,避免拖延和压力过大。 其次,选择适合自己的学习资源。PMP考试教材众多,可以选择一本权威的教材作为…

Idea-Linux远程开发部署

第一步:File->Remote Development 第二步: 第三步: 第四步:在Host位置填写Linux虚拟机的IP地址,在Username、Password填写对应的账号密码后点击Test Connection测试连接。 第五步: 第六步:在…

项目:仿RabbitMQ实现的消息队列组件

文章目录 写在前面开源仓库和项目上线其他文档说明 需求分析BrokerServer交换机类型持久化消息应答 模块划分服务端模块客户端模块交换机数据管理模块队列数据管理模块绑定数据管理模块消息数据管理模块队列信息管理模块虚拟机数据管理模块路由匹配模块消费者管理模块信道管理模…

做店干货|抖音小店找达人的要求以及渠道

大家好,我是喷火龙。 这么多年,我们做店一直是以达人合作为主,商品卡流量为辅,没有快进快出那一套,我们喜欢追求一个店铺的长期经营,长期产出,我们的逻辑是,产品可以死,…

折半查找二分查找

简介 折半查找也就是二分查找,也可以叫二分法,本质上都是一样的,通过比对中间值与目标值,一次性就能筛掉一半的数字。 举例: 一个猜数字游戏,让你来猜1-100中我选中的数,如果猜中游戏结束&…

elementUI输入框/选项卡与百度地图联动

文章目录 输入框/选项卡与百度地图联动示例html部分用到的插件main.js 输入框/选项卡与百度地图联动 示例 输入框/选项卡与百度地图联动 html部分 <template><el-form ref"Froms" :model"formData" label-width"120px"><el-for…

露营地管理小程序基于ThinkPHP+FastAdmin+UniApp开发

应用介绍 本文来自&#xff1a;露营地管理小程序基于ThinkPHPFastAdminUniApp开发 - 源码1688 基于ThinkPHPFastAdminUniApp开发的现代化的露营地管理小程序&#xff0c;是专为露营业务设计开发小程序应用。平台拥有多角色管理&#xff0c;同时具有营位预定、门票购买等功能模…

【距离四六级只剩一个星期!】刘晓艳四级保命班课程笔记(2)(可分享治资料~)

这一节是专门的听力课程&#xff0c;众所周知&#xff0c;咱们刘晓艳刘老师的口语不是特别的突出&#xff0c;当然口才是一流的☝️。 文章目录 听力预判听前预判 听力过程八大出题关键点视听一致同义转换 听完一道题后平时练习精听步骤 听力预判 听前预判 画关键词&#xff…

融合通信系统 | 让传统通信沟通无边界

随着通信技术以及互联网的发展&#xff0c;融合通信在各行各业中的应用日益增多&#xff0c;融合通信多样的通信方式为行业用户带来了极佳的通信体验&#xff0c;助力各行各业蓬勃发展&#xff0c;同时也为人们的生活和工作带来了极大的便利和效率。 融合通信系统是一种集成多种…

PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换

日期操作 一、根据日期生成日期数组 /*** 根据指定日期生成日期数组* param $start_time 开始时间* param $end_time 结束时间* return array 返回数组结果*/ function createDateArr($start_time, $end_time) {$open_start_time $start_time;$open_end_time $end_ti…

leetcode 1103.分糖果II

思路&#xff1a;模拟 其实就是用num_people取余就行了&#xff0c;如果说特别一点的话&#xff0c;就是candies的判断了。 如果说当前的candies能够分发出来&#xff0c;那么这个candies就按照题目要求分发即可&#xff1b;如果说不够&#xff0c;那么只能分给当前小朋友can…

C语言基础——数组(2)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言基础&#xff1b; 文章目录 前言 一、二维数组的创建 1.1 二维数组的概念 1.2二维数组的创建 二、二维数组…

岁月情深,爱如初见——我爸爸的老年爱情故事

​在那个泛黄的老相册里&#xff0c;藏着一对青涩的恋人&#xff0c;他们的眼神清澈而坚定&#xff0c;仿佛早已约定了今生的不离不弃。那便是我的爸爸和他的爱人&#xff0c;妈妈。时光荏苒&#xff0c;转眼间&#xff0c;两人已是白发苍苍的老人&#xff0c;但他们的爱情故事…

网络安全中攻击溯源方法

目前网络攻击已经成为常见的安全威胁之一&#xff0c;其造成的危害和损失都是不可估量的&#xff0c;因此网络攻击受到了高度重视。而当我们遭遇网络攻击时&#xff0c;攻击溯源是一项非常重要的工作&#xff0c;可以帮助我们迅速发现并应对各类网络攻击行为&#xff0c;那么网…

Jetpack架构组件_LifeCycle组件

1.LifeCycle组件 LifeCycle组件可以让我们自定义的类能主动感知到Activity、Fragment、Application、Service等系统组件的生命周期。 我们以百度定位为例&#xff0c;我们一般在Activity生命周期的onCreate回调函数里调用自定义类LocationService的Start()方法&#xff0c;在o…

四川古力未来科技抖音小店:诚信之选,品质铸就信赖之路

在当今这个数字化、网络化的时代&#xff0c;电商平台如雨后春笋般涌现&#xff0c;抖音小店作为其中的佼佼者&#xff0c;以其独特的经营模式和广泛的用户基础&#xff0c;吸引了越来越多的消费者。而在这众多的抖音小店中&#xff0c;四川古力未来科技抖音小店凭借其卓越的品…

【HarmonyOS】应用屏蔽截屏和录屏

【HarmonyOS】应用屏蔽截屏和录屏 一、问题背景&#xff1a; 金融类或者高密性质的应用APP&#xff0c;对于截屏和录屏场景&#xff0c;某些业务下是禁止不允许。 目前这种场景的需求也是非常有必要的&#xff0c;很多电诈都是通过远程录屏软件&#xff0c;获取到账户密码或者…

头颈肿瘤在PET/CT中的分割:HECKTOR挑战赛| 文献速递-深度学习肿瘤自动分割

Title 题目 Head and neck tumor segmentation in PET/CT: The HECKTOR challenge 头颈肿瘤在PET/CT中的分割&#xff1a;HECKTOR挑战赛 01 文献速递介绍 高通量医学影像分析&#xff0c;常被称为放射组学&#xff0c;已显示出其在揭示定量影像生物标志物与癌症预后之间关…

基于单片机的超声波倒车雷达设计

摘 要&#xff1a;文 章设计了一种基于单片机的超声波倒车雷达系统&#xff0c;以 AT89C51 型单片机作为控制核心&#xff0c;集距离测量、显示&#xff0c;方位显示和危险报警于一体&#xff0c;以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…

Mysql全文搜索和LIKE搜索有什么区别

全文搜索和LIKE的区别 性能&#xff1a;在大数据集上&#xff0c;全文搜索通常比LIKE查询更快&#xff0c;因为它使用了专门的索引结构。 功能&#xff1a;全文搜索提供了更丰富的查询功能&#xff0c;如多个关键词的搜索、自然语言搜索、布尔搜索等。而LIKE通常只支持简单的…