JNTRST和JTDO当做普通IO使用

今天调程序,按正常的IO口配置,发现PB3、PB4并不能按照预定的设置置1或置0。

上网查询后,原因如下:

STM32默认启动时PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNTRST、JTDI、JTDO。

当我们试用SWD接口调试仿真时,这三个引脚可以用作普通IO。

具体做法就是禁用JTAG功能。只需使用以下语句即可。

#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);      /*使能SWD 禁用JTAG*/

同时,还需要在初始化之前打开AFIO时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE); 

AFIO相关文章:AFIO时钟何时开启

时间: 2024-12-15 17:16:54

JNTRST和JTDO当做普通IO使用的相关文章

STM32JTAG口用作普通IO的配置

使用Jlink向STM32烧录程序时,需要使用6个芯片的引脚(以STM32F103C8T6为例),分别是PB4/JNTRST.PB3/JTDO.PA13/JTMS.PA14/JTCK.PA15/JTDI.NRST.标准的20针JLink接口如下图所示.  当芯片IO口资源比较紧张时,可选择SW模式烧录程序.SWD只需用到PA13/JTMS.PA14/JTCK两根线,NREST可以接可不接,而剩下的PB4/JNTRST.PB3/JTDO和PA15/JTDI就可以当做普通IO使用.但是这三个口当做普

No Cortex-M SW Device Found 解决方法

画原理图的时候为了使布线方便,使用了jlink的引脚.而STM32默认是设置为Jlink功能的, 所以烧写代码的时候必须先关闭Jlink功能才能当做普通IO口使用,关闭代码如下: 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 2 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); 而再次烧写的时候出现No Cortex-M SW Device Found 解决方法: 1 .第一种就是

Spartan6系列之器件引脚功能详述

1.   Spartan-6系列封装概述 Spartan-6系列具有低成本.省空间的封装形式,能使用户引脚密度最大化.所有Spartan-6 LX器件之间的引脚分配是兼容的,所有Spartan-6 LXT器件之间的引脚分配是兼容的,但是Spartan-6 LX和Spartan-6 LXT器件之间的引脚分配是不兼容的. 表格 1Spartan-6系列FPGA封装 2.   Spartan-6系列引脚分配及功能详述 Spartan-6系列有自己的专用引脚,这些引脚是不能作为Select IO使用的,

STM32管教复用与重映射关系

摘自:http://blog.csdn.net/lincheng15/article/details/51789093 概括一下:复用就是一个引脚有几个功能,1.做普通IO输入输出 2.其他外设的输入输出(比如I2C,TIM,SPI等等),这就是复用. 重映射就是将引脚功能重新定义到其他引脚,例如PA9是USART1-TX默认的管脚,但是现在PA9用做它用了,那可以将USART1-TX重新映射到PB6,当然这种映射不是随意的想映射到哪个脚就哪个脚,芯片内部已经固定了只能映射到固定的地方 MCU复

pcDuino 硬件LED驱动实战

最近调驱动时,调试led时遇到了点问题,于是回过头来再写个led裸板程序.在我写的pcDuino第一个裸板程序uart的基础上,再写个led裸板程序还是很轻松的.很多人觉得没有必要写什么pcDuino裸板程序,觉得没啥意义.我觉得可以用来熟悉硬件,特别是想做底层驱动开发,以及系统移植,熟悉底层硬件还是有用的.其实做底层驱动开发,也是跟硬件打交道,硬件相关的操作和裸板程序是一样的.下面介绍怎样在pcDuino上跑一个最简单的led裸板程序. 开发环境: 宿主机:ubuntu 12.04 64位 目

STM32 JTDO JREST复用为普通IO

一.开启AFIO的时钟(必须保证先打开AFIO,否则无效) RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 二.禁用JTAG,使能SWD GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//释放JTAG引脚 三.打开GPIO的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE): 即可. JTDO.JTDI.JTRS

Linux基础入门--IO重定向及管道

IO重定向及管道 一直都提到,程序:指令+数据 其实程序也有IO,数据的来源有多个地方:文件.外部 可用于输入的设备:文件(linux一切皆文件) 键盘设备.文件系统上的常规文件加载内容.网卡等: 可用于输出的设备:文件(linux一切皆文件) 显示器.文件系统上的常规文件输出保存.网卡等: 程序的数据流有三种: 输入的数据流:<-- 标准输入(stdin),是键盘: 输出的数据流:--> 标准输出(stdout),显示器: 错误输出流:  --> 错误输出(stderr),显示器: f

java io 学习

1,io 体系 在整个Java.io包中最重要的就是5个类和一个接口.5个类指的是File.OutputStream.InputStream.Writer.Reader:一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了. Java.io包中定义了多个流类型类实现输入输出的功能,从不同的角度可以分为: ~按照数据流方向的不同可以分为输入流和输出流. ~按照按照数据处理单位的不同可以分为字节流和字符流. 如下几张图可以直观的描述io

Java IO详解(转)

IO是Java及众多编程语言很重要的一块,同时很多程序的瓶颈和耗时操作也都在IO这块. 一.简介 IO操作面临很多问题,信息量的巨大,网络的环境等等,因为IO不仅仅是对本地文件.目录的操作,有时对二进制流.还有一部分是网络方面的资源,所以多种原因直接造成IO操作无疑是耗时且复杂多变的.Java对IO的支持是个不断的演变过程,经过了很多的优化,直到JDK1.4以后,才趋于稳定,在JDK1.4中,加入了nio类,解决了很多性能问题,虽然我们有足够的理由不去了解关于Java IO以前的情况,但是为了学