STM32引脚PB3、PB4、PA15作为输入输出的特殊配置

一、问题描述

   简单描述:

    最近做的一个项目中,PB3端口配置为输入,不管外部输入是高电平还是低电平,一直读取到的是低电平。

调试过程:在撰写代码过程中,又发现新的问题,Enter按键无法控制屏幕数值,反复检查了原理图,以及引脚配置均没有问题,通过万用表也检查了引脚的电压,引脚的电压与理论值3V基本一致。PB3已经拉高了,但是读取的仍为低电平。

二、解决办法

2.1以前的解决方法
    记得以前做过的ECU项目中,有几个GPIO由于是JTAG的调试引脚,输出总是没信号,调试了两天才搞定,当时是配置的时候要打开复用时钟,关闭JTAG功能,然后输出就正常了,截取配置的代码如下:

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);    //禁止JTAG功能,把PB3,PB4作为普通IO口使用  

2.2根据网上资料总结的解决办法:

PB3作为JDO,被JTAG占用。  一般都只禁用JTAG了,但是在 Asynchronous trace mode(异步跟踪调试模式),PB3还是TRACESWO,TRACESWO if async trace  is enabled  PB3,所以,作为输入还需要禁用async trace,寄存器版的那两句话就是禁用async trace的之后,输入就没问题了。

    在HAL库的__HAL_AFIO_REMAP_SWJ_NOJTAG()之后,增加下面的关闭异步跟踪调试代码:

DBGMCU->CR  &= ~((uint32_t)1<<5);  

这样,void HAL_MspInit(void)完整代码如下:

void HAL_MspInit(void)
{
 
  /* USER CODE BEGIN MspInit 0 */
 
  /* USER CODE END MspInit 0 */
 
  __HAL_RCC_AFIO_CLK_ENABLE();
  __HAL_RCC_PWR_CLK_ENABLE();
 
  /* System interrupt init*/
 
  /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
  */
  __HAL_AFIO_REMAP_SWJ_NOJTAG();
 
  /* USER CODE BEGIN MspInit 1 */
  DBGMCU->CR  &= ~((uint32_t)1<<5);  // close asynchronous trace mode
//  AFIO->MAPR = (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); // set PA15、PB3、PB4 as normal GPIO, input and output
  /* USER CODE END MspInit 1 */
}
 

再进行仿真,可以正确的读取到PB3的高低电平了,问题得到了解决,感谢众网友。

    使用标准库的话,代码如下:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);              
DBGMCU->CR  &= ~((uint32_t)1<<5);   
AFIO->MAPR = (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); /*  PA15 PB3 PB4 */

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

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

相关文章

【Python】ftfy 使用指南:修复 Unicode 编码问题

ftfy&#xff08;fixes text for you&#xff09;是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码&#xff0c;而是旨在修复因为编码不一致、解码错误或混合编码导致的…

物流行业中的AI平台架构与智能化应用

随着物流行业的迅速发展&#xff0c;尤其是电商、仓储、运输的需求日益增多&#xff0c;AI技术逐渐成为推动物流企业高效运营、提升服务水平的关键力量。AI平台架构为物流行业的各个环节提供了智能化解决方案&#xff0c;助力物流企业在仓储管理、运输调度、客户服务等方面实现…

Redis: Sentinel工作原理和故障迁移流程

Sentinel 哨兵几个核心概念 1 ) 定时任务 Sentinel 它是如何工作的&#xff0c;是如何感知到其他的 Sentinel 节点以及 Master/Slave节点的就是通过它的一系列定时任务来做到的&#xff0c;它内部有三个定时任务 第一个就是每一秒每个 Sentinel 对其他 Sentinel 和 Redis 节点…

【2023工业3D异常检测文献】Shape-Guided: 基于形状引导和双记忆库的异常检测方法

Shape-Guided Dual-Memory Learning for 3D Anomaly Detection 1、Background 提出了一个以形状为指导的专家学习框架&#xff0c;用于解决无监督3D异常检测的问题。 该方法建立在两个专门的专家模型及其协同作用的基础上&#xff0c;以从颜色和形状模态中定位异常区域。 第…

基于单片机跑步机控制系统设计

** 文章目录 前言概要功能设计设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

详细分析BigDecimal基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 之所以深入了解这个函数的用法&#xff0c;发现还可这么使用 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更…

多区域OSPF路由协议

前言 之前也有过关于OSPF路由协议的博客&#xff0c;但都不是很满意&#xff0c;不是很完整。现在也是听老师讲解完OSPF路由协议&#xff0c;感触良多&#xff0c;所以这里重新整理一遍。这次应该是会满意的 一些相关概念 链路状态 链路指路由器上的一个接口&#xff0c;链路状…

ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Windows 环境搭建 CUDA 和 cuDNN 详细教程

CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA公司推出的一个并行计算平台和编程模型&#xff0c;它允许开发者使用NVIDIA GPU进行通用计算&#xff08;即GPGPU&#xff09;&#xff0c;从而加速各种计算密集型任务。CUDA提供了一套基于C/C…

深度学习:cGAN和pix2pix图像转换

cGAN和pix2pix的基础概念 cGAN cGAN是条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks&#xff09;的简称。 它是一种基于基础GAN&#xff08;Generative Adversarial Networks&#xff09;架构的变体&#xff0c;通过给GAN模型引入额外的信息或条…

【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?

前言&#xff1a; 零实习转行产品经理经验分享01-学习准备篇_哔哩哔哩_bilibili 该篇内容主要是对bilibili这个视频的观后笔记~谢谢美丽滴up主友情分享。 全文摘要&#xff1a;如何在0实习且没有任何产品相关经验下&#xff0c;如何上岸产品经理~ 目录 一、想清楚为什么…

uniapp 上了原生的 echarts 图表插件了 兼容性还行

插件地址&#xff1a;echarts - DCloud 插件市场 兼容性这块儿不知道后期会不会支持其他浏览器 H5 的话建议可以用原生的不用这个插件

沐风老师3DMAX快速嵌板修改器插件Panelizer使用方法

3DMAX快速嵌板修改器插件Panelizer&#xff0c;一键快速几何体分布工具&#xff0c;基于3dsMax的拓扑修改器&#xff0c;将几何模型散布并对齐到四边形面上的参数化建模工具。 【系统要求】 3dsMax 2018.1 - 2025 【安装方法】 1.将插件安装文件&#xff08;.mcg&#xff09;…

Llama 系列简介与 Llama3 预训练模型推理

1. Llama 系列简介 1.1 Llama1 由 Meta AI 发布&#xff0c;包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型 数据集&#xff1a;模型训练数据集使用的都是开源的数据集&#xff0c;总共 1.4T token 模型结构&#xff1a;原始的 Transformer 由编码器&#xff08…

基于元神操作系统实现NTFS文件操作(二)

1. 背景 本文主要介绍MBR的读取和解析&#xff0c;并提供了基于元神操作系统的实现代码。由于解析MBR的目的是定位到NTFS磁盘分区进行文件操作&#xff0c;所以只解析了MBR的分区表部分&#xff0c;至于MBR的其它部分&#xff0c;可以参考相关文档进行理解。 2. 方法 &#…

Python使用matplotlib绘制五星红旗

安装包 pip install matplotlib pip install numpy完整代码 import matplotlib.pyplot as plt import numpy as np# 设置画布尺寸 fig plt.figure(figsize(10, 7)) ax fig.add_subplot(111)# 绘制红色背景 ax.set_facecolor(red)# 五星红旗的尺寸定义 flag_width 30 flag_…

VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布

VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布 VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 8.0U3 标准版&#xff0c;Dell (戴尔)、HPE (慧与)、Lenovo (联想)、IEIT SYSTEMS (浪潮信息)、Cisco …

前端规范工程-2:JS代码规范(Prettier + ESLint)

Prettier 和 ESLint 是两个在现代 JavaScript 开发中广泛使用的工具&#xff0c;它们结合起来可以提供以下作用和优势&#xff1a; 代码格式化和风格统一&#xff1a; Prettier 是一个代码格式化工具&#xff0c;能够自动化地处理代码的缩进、空格、换行等格式问题&#xff0c;…

491. 递增子序列

文章目录 491. 递增子序列思路回溯三部曲总结 491. 递增子序列 491. 递增子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如…

Linux中的进程间通信之管道

管道 管道是Unix中最古老的进程间通信的形式。 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 匿名管道 #include <unistd.h> 功能:创建一无名管道 原型 int pipe(int fd[2]); 参数 fd&#xff1a;文件描述符数组,其中fd[0]表示读端, fd[1]表示写端 …