今天突发奇想,想通过杜邦线控制LED灯(也就是不直接对LED的端口进行控制,而是控制其他端口,然后用杜邦线把两个端口连接起来)。我首先是这么做的,使能PB PE端口,然后设置PB5(连接LED0)为通用推挽输出,而PE5(连接LED1)不做任何设置,它的默认状态就是浮空输入。然后在main函数中控制PB5端口不断变换,致使LED0规律的闪烁,然后用一根杜邦线把PB5 和 PE5连接起来,就会发现LED1会和LED0同步闪烁,原因就是因为PB5是作为输出,而PE5作为输入,所以将PB5 和 PE5连接的时候就会将PB5的信号输入到PE5,PE5收到和PB5相同的信号就会导致LED1和LED0同步闪烁,这没什么问题,可是当我想把PB5设置为浮空输入,而设置PB4为通用推挽输出,然后连接PB4 PB5达到控制LED0的效果的时候居然发现不行,我一度以为是板子的问题,最后通过交流群中高人指点才知道原因,原来PB4是特殊引脚,想要使用就要释放引脚,那么问题来了

  1. 什么引脚是特殊引脚?我如何知道
  2. 释放引脚该怎么释放呢?

首先解答第一个问题,怎么知道一个引脚是不是特殊引脚。答案是通过数据手册查看,每块芯片都有对应的数据手册,例如我的就是F103大容量数据手册,这个手册一般是全英文的,但是不要慌,我们要看的东西与英语水平无关。

打开数据手册,然后找到 pinouts and pin descriptions这一章,刚开始是类似下面的图片

这不是我们要看的,一直往下翻,直到看见下面的表格

我们就是通过看这个表格来知道一个引脚是不是特殊引脚。

倒数第三列的Mainfunction(after reset)就是引脚的主要功能,也就是复位后展现出来的功能,我们找到PB5,PE5,PB4这三个引脚,

我已经找出来并且截图如上所示,可以看到PB5,PE5复位后还是作为通用IO端口,但是PB4复位后却不是,PB4复位后是作为NJTRST,虽然不知道是干嘛的,但肯定不是GPIO,而对应的GPIO功能在倒数第一列,这就能解释为什么连接PB5,PE5能够实现连通 而连接PB5,PB4却达不到想要的效果,因为此时PB4已经用作其他的功能了,所以当我们在想要使用一个引脚的时候先要看看他是否已经被使用。

前面讲了倒数第三列是引脚的主要功能,也就是复位后引脚具备的功能,我们可以看到PB4在最后一列,那么倒数第二列和倒数第一列又分别是什么呢?先来看倒数第二列,这一列是复用功能,GPIO的输出不是分为通用输出和复用输出吗,其中通用输出就是指输出的信号由ODR寄存器控制,其实也就是由CPU控制的,而复用输出 则是指 输出的信号是由 复用的外设输出的,学PWM的时候会用到复用功能输出,其实就是 输出的信号是由 定时器这个外设产生的,而倒数第一列则是REMAP (重映射),这个我们也会在学PWM的时候用到,注意观察上面的PB5中倒数第一列是不是有一个TIM3_CH2,这说明定时器3的通道2可以通过重映射绑定到PB5引脚,具体的操作通过在STM32F1中文参考手册查看AFIO->MAPR寄存器得知。

寄存器布局如上,TIM3_REMAP在 10 和 11位,我们找到下边关于这两位的解释:

通过这两位有三种有效的设置,分别为 没有重映射, 部分重映射 , 完全重映射,在没有重映射的情况下 PB5是未被使用的,而通过设置部分重映射 则可以将CH1重映射到PB5,PB5是直接连接LED0的,所以PWM输出的信号会以LED灯的明亮展示出来。

注意 :如果要修改AFIO相关的寄存器,则必须先使能AFIO时钟

上面的重映射就是解决我们第二个问题“如何释放引脚”的关键了 ,我们想要释放PB4引脚,就要先找到占用这个引脚的设备,然后解除占用,就释放这个引脚了。我们知道占用PB4的是NJTRST,然后通过各种方法去查清楚到底是什么外设占用了,我反正上网查了是调试占用了。而调试相关的映射是在AFIO->MAPR寄存器的24-26位,如下

NJTRST是JTAG调试的复位功能,所以我们可以设置001 (启用SWJ和JTAG,但是JTAG没有复位功能),也可以设置为010 (直接关闭JTAG,SWJ仍然开启),也可以通过 设置为100(把SWJ 和 JTAG都关闭了)来达到释放PB4的目的。

,也可以通过 设置为100(把SWJ 和 JTAG都关闭了)来达到释放PB4的目的。

快去试试吧:)

STM32如何释放引脚相关推荐

  1. 关于STM32中SPI1引脚PB3和PB4无法拉低的问题及相关解释

    关于STM32中SPI1引脚PB3和PB4无法拉低的问题及相关解释 近几点准备使用SPI1调试M25P80 发现需要用到引脚 PB3----SPI1_SCK PB4----SPI1_MISO PB5- ...

  2. STM32之VCAP引脚问题

    STM32之VCAP引脚问题 前段时间在做一个单片机综合课程设计,其内容是实现一个小型数字式测温计.按照我的想法希望用STM32F405RGT6来实现,之所以选择这个是因为想借此机会做一个核心板出来, ...

  3. STM32——驱动7引脚OLED

    STM32驱动7引脚的OLED 寒假在家里无聊又不能出门,开学可能还延迟了(新型肺炎最近比较猖狂)武汉加油!陕西加油!全国一起加油!一定要减少出门啊!!! 放假前带了一个OLED屏幕,想着刚好没有接触 ...

  4. STM32 SPI NSS 引脚为不能拉高问题

    使用过 STM32 的SPI 的朋友可能都会发现一个问题,那就是其NSS引脚 在硬件模式下无法自动拉高,可能也因为这个原因致使  .大部分朋友在使用SPI时候都是优先选用软件 控制NSS引脚的工作模式 ...

  5. STM32 中JTAG 引脚作为普通IO口设置方法

    stm32的程序下载引脚涉及PB3.PB4.PA13.PA14.PA15,其中PA13,PA14分别作为SWD调试的SWIO和SWCLK.PB3,PB4,PA13,PA14,PA15共同用于JTAG调 ...

  6. 【STM32】IO引脚复用器和映射原理与配置

    IO引脚复用器和映射原理与配置 什么是端口复用,STM32引脚怎么复用? STM32有很多的内置外设(把RTC,ADC,看门狗等外设都集中在芯片里面了),这些外设的外部引脚都是与GPIO复用的.也就是 ...

  7. STM32的PDR_ON引脚,比较好的解释(转载+补充)

    一些 STM32 产品能够使能/失能内部电源监视器,通过 PDR_ON 引脚电平进行控制实现. PDR_ON 引脚电平为低时, 内部电源监视器关闭:当 PDR_ON 引脚电平为高时,内部电源监视器使能 ...

  8. STM32 SWD/JTAG引脚被占用 无法使用Jlink下载代码时的解决方法

    2022/09/15 众所周知,当我们使用STlink或者Jlink的SWD为STM32下载程序时使用到的是PA13和PA14两个引脚,但在某些情况下我们可能会将这两个引脚复用为其它的模式,此时,我们 ...

  9. STM32 I/O引脚复用

    在芯片原理图上经常可以看到GPIO端口后边接很长一串,比如PA9/USART1_TX/TIM1_CH2,意思就是PA9引脚除了可以作为简单的I/O输入输出电平,还可以有复用功能,可以复用为USART1 ...

  10. 【嵌入式 · STM32】STM32F407引脚复用对照表

    PWM 注:红色标注代表 TIMx_CHxN U(S)ART ADC DMA 致正在学习嵌入式的小伙伴们: 嵌入式的学习是要基础知识 + 动手实践同步进行的,在这里给大家推荐一个可以系统学习嵌入式和刷 ...

最新文章

  1. java zookeeper_Java zookeeper开发实例
  2. 你的AI模型有哪些安全问题,在这份AI攻防”词典”里都能查到
  3. 启动Eclipse时,启不起来JVM terminated. Exit code=-1
  4. 如何单元测试Java的private方法
  5. [引]VS2005 之 Visual Basic 程序的结构
  6. centos vsftp mysql_CentOS6.4 实现基于mysql的vsftpd
  7. android struts2 图片上传,xhEditor struts2实现图片上传
  8. 计算机知识问答一站到底,一站到底的答题规则是什么
  9. 【图像处理基础知识】-傅里叶变换
  10. java非法字符65288,spring-boot使用内置tomcat时http请求非法字符过滤的问题
  11. java项目学习_一个Java项目的学习
  12. logback.xml文件配置(按时间、文件大小和log名称生成日志)
  13. 安卓dj专业打碟机软件_帮助 DJ 走出卧室,开始第一场演出
  14. C#把excel数据转换成DataTable
  15. 青龙面板-花花阅读6.25 最新修复版
  16. 明翰经验系列之管理篇V1.1(持续更新)
  17. NotePad++针对一批数据批量添加双引号和逗号以及去除空格的处理技巧
  18. 整理!这10款PC端软件,设计师必备!
  19. Python爬取百度疫情数据并预测未来七天及其可视化
  20. 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)

热门文章

  1. 【K70例程】004触摸屏触摸(SPI)
  2. Java-飞机小游戏
  3. 四年级上册计算机我的课程表教案,《我的课程表》教学设计
  4. ERP软件定制修改功能要注意哪些要点!
  5. MySQL 获取表字段相关信息
  6. windows自带的nfs服务_NFS网络文件系统基础配置与使用
  7. AI绘画新秀-免费使用-Leonardo(Midjourney对手)注册教程
  8. 2022年腾讯云新春采购活动云服务器会场活动力度咋样?
  9. 《C语言程序设计第三版》(苏小红)习题七 课后答案
  10. 2022G1工业锅炉司炉考试题库模拟考试平台操作