关于STM32F4 SWD复用为普通GPIO做输入输出用

2023-11-10 20:50

本文主要是介绍关于STM32F4 SWD复用为普通GPIO做输入输出用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先板子上电启动默认是SWD模式。
对于F1系列,复用SWD为普通GPIO,可以调用这个函数进行专门的禁止:
在这里插入图片描述对于F4系列,首先我们要认识到一点,系统上电后,所有引脚都是AF0复用,F4系统共支持AF0-AF15种复用
具体到每种复用,查看数据手册就行,比如这个:
在这里插入图片描述====================================================
对于F4系列,没有专门的禁止函数了,系统上电,这几个引脚默认是配置成AF0复用,且用于JTAG/SW调试模式。
● PA15: JTDI 处于上拉状态
● PA14: JTCK/SWCLK 处于下拉状态
● PA13: JTMS/SWDAT 处于下拉状态
● PB4: NJTRST 处于上拉状态
● PB3: JTDO 处于浮空状态
在这里插入图片描述用户要使用这些引脚做通用IO,只要不配置复用模式即可(GPIO_Mode_AF),配置成输入或者输出就行
GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode /
GPIO_Mode_OUT = 0x01, /
!< GPIO Output Mode /
GPIO_Mode_AF = 0x02, /
!< GPIO Alternate function Mode /
GPIO_Mode_AN = 0x03 /
!< GPIO Analog Mode */

PA13 PA14如果要配置成普通GPIO,可以直接进行GPIO初始化,不需要先去禁用JTAG/SWD,因为F4板子上电后默认PA13 PA14就是复用为SWD的,同时也支持普通IO输入输出,初始化普通IO,如下:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

**注意:**一旦初始化为普通GPIO, SWD将不再好使用,因为每次板子上电启动会去执行程序,程序里已经初始化了普通GPIO,要解决该问题,可以采取延迟初始化或者硬件上提供一个判断条件,在什么条件下的时候可以去初始化为普通GPIO。这样就不会导致板子重新启动后无法烧录程序。
如果已经出现了该问题,可以采用串口烧录程序的办法,将flash里的程序清除掉即可。

这篇关于关于STM32F4 SWD复用为普通GPIO做输入输出用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385160

相关文章

mysql索引一(普通索引)

mysql的索引分为两大类,聚簇索引、非聚簇索引。聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引则不同。聚簇索引能够提高多行检索的速度、非聚簇索引则对单行检索的速度很快。         在这两大类的索引类型下,还可以降索引分为4个小类型:         1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。         2,唯一索引:与普通索引

上位机图像处理和嵌入式模块部署(mcu和swd接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但是硬件的连线都差不多,都是mcu上的3.3v、clk、dio和gnd四根连线。出于好奇,今天花了点时间了解了一下debug port、sw

机器学习算法(二):1 逻辑回归的从零实现(普通实现+多项式特征实现非线性分类+正则化实现三个版本)

文章目录 前言一、普通实现1 数据集准备2 逻辑回归模型3 损失函数4 计算损失函数的梯度5 梯度下降算法6 训练模型 二、多项式特征实现非线性分类1 数据准备与多项式特征构造2 逻辑回归模型 三、逻辑回归 --- 正则化实现1 数据准备2 逻辑回归模型3 正则化损失函数4 计算损失函数的梯度5 梯度下降6 训练模型 总结 前言 今天我们开始介绍逻辑回归的从零开始实现代码了,

stm32学习笔记---GPIO输出(代码部分)LED闪烁/流水灯/蜂鸣器

目录 面包板的使用方法 第一个演示代码:LED闪烁 最后一次快速新建工程演示 点击新建工程 选择芯片 在工程文件夹中创建Start、Library、User Start文件夹的必备文件复制操作 Library文件夹的必备文件复制操作 User文件夹的必备文件复制操作 在keil中创建Start、Library、User分组并添加文件 添加Start、Library、User文

计算机组成原理——输入输出系统

除了cpu和存储器两大模块之外,计算机硬件系统的第三个关键部分是输入输出模块,又称为输入输出系统。随着计算机系统的不断发展,应用范围的不断扩大,i/o设备的数量和种类也越来越多,它们与主机的联络方式及信息的交换方式也各不相同。 一.输入输出系统的发展概况 1.早期阶段 这个阶段i/o设别种类较少,i/o设备与主存交换信息都必须通过cpu。当时的特点是:每个i/o设备都必须配有一套独立的逻辑电路

stm32学习笔记---GPIO输入(理论部分)

目录 GPIO输入模式下的硬件和电路 按键原理 传感器原理 什么是上下拉电阻? 运算放大器当做比较器 按键的硬件电路 传感器的硬件电路 STM32用到的C语言知识 STM32中的C语言数据类型 C语言中的宏定义 typedef和define的区别是什么? C语言的枚举 声明:本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记,我之所以记录下来是为了方便自己

Spring Boot 打成的 jar 和普通的 jar

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java -jar xxx.jar 命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。 Spring Boot 的 jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spri

运算符重载(重载为普通函数)

运算符重载 – 基本概念 郭  炜  刘家瑛 #include <iostream>using namespace std;//this指针的应用class complex{private:double real;double img;public:complex(int i=0.0,int j=0.0):real(i),img(j){}~complex(){}void pr

stm32学习笔记---GPIO输出(理论部分)

目录 GPIO通用输入输出口 GPIO的基本结构 I/O端口位的基本结构 输入部分 输出部分 推挽模式 开漏模式 GPIO的8种工作模式 STM32手册GPIO和AFIO大致介绍 STM32外部的设备和电路 声明:本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记,我之所以记录下来是为了方便自己日后复习。如果你也是跟着江科大的视频学习的,可以配套本专栏食用,如

C++:文件及输入输出流

I/O 流,流类库 输入流:与输入设备(如键盘)相联系的流 输出流:与输出设备(如显示器)相联系的流 输入/输出流: 与输入输出设备(如磁盘)相联系的流 流类:C++中预先定义了一组类,用于处理输入/输出 流类库:C++中所有的流类组成的集合 streambuf 类(底层) 派生类 1. filebuf 类:使用文件来保存缓冲区的字符序列 2. strstreambuf 类