stm32引脚PB3、PB4、PA15作为普通IO口用时,需要先解除调试端口复用

news2024/11/24 13:00:28

当项目调试的时候,发现PA15引脚无论配置输出高还是低或者输入,均只能输出3.3V的高电平。

目前STM的硬件调试有两种方法,JTAG和SW的方式,目前个人认为最好的方式就是SW,因为它只占用PA13和PA14两个IO。而JTAG还要多占用PB3,PB4,PA15三个IO口。很浪费资源。

通常使用SW的方式,但是STM默认会启用SW和JTAG两种。也就是说,默认情况下,PA13、PA14、PB3、PB4、PA15均不能作为普通io使用。


因为没有使用JTAG,所以为了让PB3,PB4,PA15这三个IO变为普通io,必须解除调试端口复用。

        AFIO(Alternate Function Input/Output)模块主要用于配置一些外设的复用功能(alternate function)。

        配置步骤:

1.打开AFIO时钟

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

2.查芯片引脚手册

这里我们将PA15从JTDI变成PA15普通引脚。

3.使用GPIO_PinRemapConfig()函数

 这里我们主要看蓝色的三个参数:

第一个,GPIO_Remap_SWJ_NoJTRST,就是解除 JTRST 引脚的复用。在引脚定义表中就是 NJTRST 也就是PB4。使用 GPIO_Remap_SWJ_NoJTRST 参数,PB4 就变为正常的GPIO口了。其他四个端口PA13、PA14、PA15、PB3仍然是调试端口,不能当做GPIO口来使用。


第二个,GPIO_Remap_SWJ_JTAGDisable,就是解除 JTAG 调试端口的复用,在引脚定义表中就是PA15、PB3、PB4这三个端口全都变回GPIO口,PA13和PA14任为SWD的调试端口。


第三个,GPIO_Remap_SWJ_Disable,就是把SWD和JTAG的调试端口全部解除,在引脚定义表中就是PA13、PA14、PA15、PB3、PB4这5个引脚全部变成普通的GPIO,没有调试功能了。这个参数不可随意调用,一旦调用这个参数并且下载程序后,调试端口就没有了,这之后的STLINK就下载不进去程序了,这时只能使用串口下载,下载一个没有解除调试端口的新的程序。这样调试端口才能重新使用。

以上描述对应参考手册中的以下两个表:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //PB4

GPIO_Remap_SWJ_NoJTRST:只将PB4变成普通IO口(GPIO)。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //PA15|PB3|PB4

GPIO_Remap_SWJ_JTAGDisable:JTAG-DP 禁用 + SW-DP 使能。只将PA15 ,PB3 ,PB4变成普通IO口。

 

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //PA13|PA14|PA15|PB3|PB4

GPIO_Remap_SWJ_Disable:将上述串口都变成普通IO口,完全禁用(JTAG+SW-DP)。使调试端口失效,不建议使用。

通常就是解除 JTAG 的复用,保留 SWD 的复用,所以这里选GPIO_Remap_SWJ_JTAGDisable参数。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO时钟,即端口复用时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//失能JTAG

这两句就ok了,以后就可以将上述三个引脚作为普通io了。

 

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

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

相关文章

江协科技STM32学习- P33 实验-软件I2C读写MPU6050

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

快速遍历包含合并单元格的Word表格

Word中的合并表格如下,现在需要根据子类(例如:果汁)查找对应的品类,如果这是Excel表格,那么即使包含合并单元格,也很容易处理,但是使用Word VBA进行查找,就需要一些技巧。…

window免密登录虚拟机

环境 windows11 VirtualBox 图形用户界面 版本 7.1.2 r164945 (Qt6.5.3) CentOS-7-x86_64-Minimal-2009 虚拟机登录用户:root 1. 在虚拟机执行 1.1 生成秘钥(后续直接回车就行) ssh-keygen -t rsa -P 1.2 配置秘钥 cat ~/.ssh/id_rsa.pu…

标签之文字排版,图片,链接,音视频(HTML) 基础版

目录 标签之文字排版,图片,链接,音视频知识点: 练习题一: 效果: 练习题二: 效果: 标签之文字排版,图片,链接,音视频知识点: 超文本:链接 标记:标签<> 双标签 单标签 <br>//换行 <hr>//水平线 向后tab 向前shifttab html注释<!----> css /**/ …

UE5相机系统初探(一)

UE5相机系统初探&#xff08;一&#xff09; 和Unity类似&#xff0c;UE的相机也是由名为Camera的component控制的。那么&#xff0c;在UE中要如何实现一个跟随玩家的第三人称相机呢&#xff1f;假设我们已经有了一个表示玩家的类ACF_Character&#xff0c;首先第一步就是要先在…

短剧开发新模式:从内容创新到市场突围的全攻略

在探索短剧开发模式的过程中&#xff0c;理解其核心要素是至关重要的第一步。短剧作为一种独特的叙事形式&#xff0c;其特点是在极短的时间框架内讲述一个完整且吸引人的故事&#xff0c;这要求创作者必须具备高超的叙事技巧和对观众心理的深刻理解。创作者面临的首要挑战是如…

模型剪枝,如何把模型的使用成本降下来?

模型剪枝如何为企业节省百万预算&#xff1f; ©作者|DWT 来源|神州问学 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;如GPT-3、LLaMA等在自然语言处理领域取得了令人瞩目的成果。然而&#xff0c;这些模型通常拥有数十亿甚至上千亿的参数&#xff0c;训练…

云效+mqtt实现本地构建和远程自动发版

之前写过一篇jenkinsmqtt实现本地构建和远程自动发版_jenkins远程调用和本地调用-CSDN博客 由于本地搭建jenkins实在太费机器了&#xff0c;这次改用云效搭建。不过云效并没有直接发送mqtt的方法&#xff0c;需要编写中转接口。 中转接口采用go-gin框架实现&#xff0c;代码如…

【蔬菜识别】Python+深度学习+CNN卷积神经网络算法+TensorFlow+人工智能+模型训练

一、介绍 蔬菜识别系统&#xff0c;本系统使用Python作为主要编程语言&#xff0c;通过收集了8种常见的蔬菜图像数据集&#xff08;‘土豆’, ‘大白菜’, ‘大葱’, ‘莲藕’, ‘菠菜’, ‘西红柿’, ‘韭菜’, ‘黄瓜’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神…

安装Blender并使用

前言 该系列记录了如何用Blenderpro来构建自己的场景数据集&#xff0c;从环境搭建到后期构建数据集的整个流程 本文章是第一部分&#xff0c;BlenderPrc2的安装以及环境配置 部分参考https://blog.csdn.net/weixin_49521551/article/details/121573334 官方文档https://dlr…

ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用

本文整理于 2024 年云栖大会阿里云智能集团高级技术专家金吉祥&#xff08;牟羽&#xff09;带来的主题演讲《ApsaraMQ Serverless 能力再升级&#xff0c;事件驱动架构赋能 AI 应用》 云消息队列 ApsaraMQ 全系列产品 Serverless 化&#xff0c;支持按量付费、自适应弹性、跨可…

栈虚拟机和寄存器虚拟机,有什么不同?

本来这节内容是打算直接讲字节码指令的&#xff0c;但讲之前又必须得先讲指令集架构&#xff0c;而指令集架构又分为两种&#xff0c;一种是基于栈的&#xff0c;一种是基于寄存器的。 那不妨我们这节就单独来讲讲栈虚拟机和寄存器虚拟机&#xff0c;它们有什么不同&#xff0…

Rust整合Elasticsearch

Elasticsearch是什么 Lucene&#xff1a;Java实现的搜索引擎类库 易扩展高性能仅限Java开发不支持水平扩展 Elasticsearch&#xff1a;基于Lucene开发的分布式搜索和分析引擎 支持分布式、水平扩展提高RestfulAPI&#xff0c;可被任何语言调用 Elastic Stack是什么 ELK&a…

【Apache Zookeeper】

一、简介 1、场景 如何让⼀个应⽤中多个独⽴的程序协同⼯作是⼀件⾮常困难的事情。开发这样的应⽤&#xff0c;很容易让很多开发⼈员陷⼊如何使多个程序协同⼯作的逻辑中&#xff0c;最后导致没有时间更好地思考和实现他们⾃⼰的应⽤程序逻辑&#xff1b;又或者开发⼈员对协同…

手把手写Linux第一个小程序 - 进度条(5种版本)

本专栏内容为&#xff1a;Linux学习专栏&#xff0c;分为系统和网络两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握Linux。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;linux &#x1f69a;代码仓库&#xff1a;小小unicorn的代…

TikTok如何用邮箱注册?用哪种邮箱比较好?

要在TikTok上创建一个账号&#xff0c;首先需要进行注册&#xff0c;这是一个简单但至关重要的步骤。在本篇文章中&#xff0c;我们将详细介绍如何用邮箱注册TikTok的整个过程&#xff0c;包括每个步骤的细节和注意事项。此外&#xff0c;我们还将讨论选择哪种邮箱比较好&#…

LabVIEW在Windows和Linux开发的差异

LabVIEW广泛应用于工程和科研领域的自动化和测量控制系统开发&#xff0c;其在Windows和Linux平台上的开发环境有所不同。这些差异主要体现在操作系统兼容性、硬件支持、软件库和驱动程序、实时系统开发以及部署选择上。以下从各个方面详细对比分析LabVIEW在Windows与Linux系统…

哪个牌子的宠物空气净化器好?口碑好的宠物空气净化器推荐!

哪个牌子的宠物空气净化器好&#xff1f;作为一名家电测评博主&#xff0c;我发现市面上宠物空气净化器的牌子越来越多了&#xff0c;很多厂家都看中了宠物行业的红利&#xff0c;想来分一杯羹&#xff0c;这就导致很多技术不成熟的产品流入了市场。今年我测试了50多台宠物空气…

ios 快捷指令扩展(Intents Extension)简单使用 swift语言

本文介绍使用Xcode15 建立快捷指令的Extension&#xff0c;并描述如何修改快捷指令的IntentHandler&#xff0c;带参数跳转主应用&#xff1b;以及展示多个选项的快捷指令弹框(配置intentdefinition文件)&#xff0c;点击选项带参数跳到主应用的方法 创建快捷指令 快捷指令是…

计算机的错误计算(一百四十一)

摘要 探讨 MATLAB中正弦、余弦的计算精度问题。当自变量为大数时&#xff0c;输出可能出错。 从 IEEE-754-2019 知&#xff0c;三角函数的定义域是实数域。 例1. 计算 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB的输出均为错误结果&#xff0c;即没有正确有效数字。…