STM32的GPIO重映射配置(解除下载端口的重映射)

news2024/12/25 23:42:22

在设计一个项目的时候,因为用的是STMF103C8T6,引脚较少,所以把可以用的GPIO都需要用上,但是由于下载的引脚在出生时,被厂家已经配置好了,所以我们得利用软件配置一下,使引脚变成正常的GPIO。

手册图解:

 

STMF103C8T6一共有48个引脚,一共有五个下载接口,分别是:

PA13——JTMS/SWDIO

PA14——JTCK/SWCLK

PA15——JTDI

PB3——JTDO

PB4——NITRST

因为我需要使用SWDIO和SWCLK进行ST-Link进行程序下载
 

在这里就配置一下GPIOA_Pin_15;首先开启重映射时钟(AFIO),这个在APB2总线上

这这里设置AFIO是为了让AFIO去配置寄存器

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

然后调用解除SWJ重映射函数,使GPIO正常化

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

第一次参数有下列三种选择

GPIO_Remap_SWJ_NoJTRST:解除PB4的复位调试端口

GPIO_Remap_SWJ_JTAGDisable:解除JTAG下载接口(PA15和PB3)

GPIO_Remap_SWJ_Disable:解除全部下载接口(PA13,PA14,PA15和PB3)

一定慎用这几个参数,要是一不小心把接口全部解除重映射,那么只能利用串口下载程序了。

 完整程序,解除PA15,PB4的端口复用功能,使PA15,PB4正常

void Init ( void )
{		
	/*定义一个GPIO_InitTypeDef类型的结构体*/
	GPIO_InitTypeDef GPIO_InitStructure;
	
	/*开启外设时钟*/
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
 
    /* 开启端口复用时钟 */	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
 
	 /* 解除PA15,PB4的端口复用 */	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
 
	/*选择要控制的引脚*/															   
  	GPIO_InitStructure.GPIO_Pin = GPIO_PIn_15;	
 
	/*设置引脚模式为通用推挽输出*/
  	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
 
	/*设置引脚速率为50MHz */   
  	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
 
	/*调用库函数,初始化*/
  	GPIO_Init ( GPIOA, &GPIO_InitStructure );		  
	
}

 

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

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

相关文章

安卓12源码编译错误-java.lang.OutOfMemoryError: Java heap space

报错如下: FAILED: out/soong/.intermediates/frameworks/base/module-lib-api-stubs-docs-non-updatable/android_common/metalava/api_lint.timestamp out/soong/.intermediates/frameworks/base/module-lib-api-stubs-docs-non-updatable/android_common/metala…

Flutter开发日常练习-小猫咪杂货店(新增动画和跳转抖音)

之前的练习加了个详情页面,然后跳转第三方页面抖音用户详情页面 跳转详情页添加了Hero的动画,共享元素过度 一个 标准 hero 动画 使 hero 从一页飞至新页面,通常以不同大小到达不同的目的地。 设定好每个图片的id,通过id作为 Hero 组件的标识,id不能重,否则会报错&…

DHCP笔记

目录 DHCP动态主机配置协议——UDP67/68端口 DHCP获取IP地址 客户端首次获取IP地址 客户端再次获取IP地址 租期/续租 DHCP的工作报文 DHCP的配置 案例 DHCP动态主机配置协议——UDP67/68端口 DHCP是应用层协议,采用C/S服务模式,只能在一个广播域…

TortoiseSVN使用-授权访问

文章目录 3.4.6 授权访问 3.4.6 授权访问 总结: 如果是匿名访问(就是不用输入用户名密码的访问方式),请只开启anon-access write如果授权访问,请先设置anon-access none,然后打开3个:auth-a…

C++ “类与对象”

类与对象的概念 类相当于是结构体的声明,是结构体的设计图,而对象是利用设计图的创造的产物. (1).类的大小计算 类的大小计算时与结构体类似,但函数是不计入大小的(函数放在单独的公共空间). 在…

贝叶斯学习(Bayesian Learning)提高篇

Advanced Bayesian Learning 前言Review Bayes Optimal ClassifierNaive Bayes Classifier这里其实不太懂ExampleLaplace smoothing加完之后原数据的比例会发生变化分子1,如何确定分母的加数 Naive Bayes for Document Classi cationProblem statementDocument repr…

C语言猜数字小游戏

今天,我们来写一个猜数字小游戏,这个游戏的大致规则如下:👇 1.电脑会随机生成一个数1~100 2.猜数字 a> 猜大了,提醒猜大了,继续猜 b> 猜小了,提醒猜小了,继续彩 c> 猜对了&…

Windows下版本控制器(SVN)-启动服务器端程序

文章目录 3.3 启动服务器端程序 3.3 启动服务器端程序 ①SVN 服务器必须处于运行状态才能响应客户端请求,帮助我们管理项目文件。 所以我们必须将 SVN 服务器启动起来。启动 SVN 服务器有两种方法,一个是命令 行方式,一个是注册 Windows 服务…

基于容器平台 ACK 快速搭建 Stable Diffusion

作者:子白 本文介绍如何在阿里云容器平台 ACK 上快速搭建一套可对外提供服务的 Stable Diffusion。 CPU 版本 前提条件 已创建 Kubernetes 托管版集群。具体操作,请参见创建 Kubernetes 托管版集群[1]。 📍无需 GPU,节点需要…

数据库系统概论--第三章课后习题

1.试述SQL的特点。 答:SQL有以下特点: ①综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作…

NestJS(1)初识 NestJS 和 Hello, World

初识 NestJS 先来看下官网对 NestJS 的介绍。 Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发&#xff…

YARN On Mapreduce搭建与wordCount案例实现

文章目录 1.前言1.YARN 集群搭建1.1 ResourceManager High Availability 架构图1.2 配置文件mapred-site.xmlyarn-site.xml 1.3 启动服务和rm启动yarn启动rm资源管理访问页面查看集群状态 2.运行官方的WC案例2.1 运行jar准备一个data.txt文件日志查看输出 1.前言 YARN的基本思…

JVM原理

JVM 什么是JVM? JVM是一种虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。 使用J…

Nginx之rewrite与location重写功能

一、常用的Nginx 正则表达式 字符涵义以及示例^匹配输入字符串的起始位置$匹配输入字符串的结束位置*匹配前面的字符零次或多次;如“ol*”能匹配“o”及“ol”、“oll”匹配前面的字符一次或多次;如“ol”能匹配“ol”及“oll”、“olll”,但…

GoJS Beginner Tutorial #1

1.关系图: gojs部件由一个或多个gojs面板组成,这些面板包含和组织各种gojs图形对象 通常使用go.GraphObject.make创建一个GraphObject,我们通过使用$符号变量缩短了该函数的名称 这个函数的第一个参数,往往是你想要制作的GraphOb…

Sentinel同时配置fallback和blockHandler的问题

Spring Cloud在使用Sentinel进行服务降级和熔断时,如果同时配置了fallback和blockHandler,则在服务熔断后,抛出的BlockException不会再fallback逻辑中执行,而是在blockHandler逻辑中执行。 首先来看只配置了fallback的情况&#x…

Python文件管理【open和with open的使用】

一、文件的操作步骤 基本都是三个步骤: 打开文件、读写文件、关闭文件 1.open()函数 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件,语法如下: open(name,mode) name&#xff…

LeafLet加载自定义Legend的设计与实现

背景 众所周知,在GIS的世界里,图例和地图永远是一对一起出现的对象。在地图上表示地理环境各要素,比如山脉、河流、城市、铁路等所用的符号叫做图例。这些符号所表示的意义,常注明在地图的边角上。图例是表达地图内容的基本形式和…

引用与指针:在C++中如何做出正确的选择?

文章目录 前言1. 引用入门2. 引用作为函数传参3. 引用作为函数返回值4. 引用和指针5. 其他区别 前言 引用是 C 的新增内容,在实际开发中会经常使用,它就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的…

使用YOLOV5-6.2预训练模型(yolov5s)进行detect的详细说明(detect.py)文件解析

目录 准备源文件和预训练文件下载python版本以及torch版本说明:文件目录说明测试文件 detect.py使用测试单张图片测试一个文件夹里的图片 准备 源文件和预训练文件下载 下载链接:https://github.com/ultralytics/yolov5/releases/tag/v6.2 源文件和预训…