当前位置:   article > 正文

GPIO使用(二)如何将调试接口配置成普通IO口及JTAG和SWD禁用解除_默认配置为jtag功能

默认配置为jtag功能

关于GPIO的复用

STM32F10x系列及AT32F4xx的MCU复位后,PA13/14/15/ PB3/PB4默认配置为JTAG功能。那么为了充分利用芯片的I/O口资源,就会把这些端口设置为通用I/O口,意味着将这些引脚复用为普通I/O功能。以AT32F4xx系列为例。
在数据手册有以下介绍:
在这里插入图片描述

在用户手册里复用功能I/O章节和调试设置章节有关复用说明:
在这里插入图片描述
在这里插入图片描述

根据以上手册内容可知:
1、默认JTAG调试功能,那么PA13/PA14/PA15 /PB3/PB4都不能做普通I/O口使用;
2、关闭JTAG-DP且同时关闭SW-DP,则PA13/PA14/PA15/PB3/PB4窦可做普通I/O口使用。

一、根据所要配置成普通I/O口选择关闭JTAG-DP or SW-DP。

以PB3为例:可以选择SWJTAG_GRMP[2: 0]位 的010和100,优先选择关闭少的,即选择010所对应的(AFIO_MAP)的设置。尽量不要关闭SW-DP,关闭SW-DP就不能使用SWD下载(无法使用J-LINK调试),给调试带来不便。
将PB3作为普通I/O的设置包括以下步骤:
1、时钟配置:添加 RCC_APB2Periph_AFIO

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  • 1

2、添加调试I/O配置寄存器AFIO_MAP

GPIO_PinsRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  //AFIO_MAP的SWJTAG_GRMP[2: 0]位 为010(优先)GPIO_PinsRemapConfig(GPIO_Remap_SWJ_ALLDisable, ENABLE);  //AFIO_MAP的SWJTAG_GRMP[2: 0]位 为100
  • 1
  • 2
  • 3

//一般在库文件的xx_gpio.h中会有关于AFIO_MAP_define

3、其他代码就是普通引脚配置了;(选择芯片不同,配置GPOI也会有些差异)
在这里插入图片描述

4、配置好后,若此IO口控制输出就用万用表测量输出器件状态;也可直接测量MCU引脚PB3的对地电压变化,在0V/3.3V切换。

若是STM的请参考:
在这里插入图片描述

二、若同时禁止JTAG-DP和SW-DP,怎么使用SWD下载?

1、若你使用的仿真器支持SWD仿真模式,就不受这个禁止JTAG功能的影响。但受SW-DP影响。在重新上电的之前,保证BOOT0为高电平,BOOT1为低电平(可将BOOT0引脚直接和高电平相连),此时禁止程序从烧写过的代码启动,重新烧写程序即可。

2、若使用JTAG-DP,则
设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将FLASH擦除,之后恢复JTAG功能。
或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。将开发板断电后重新上电,此时就因不是在用户程序模式,所以不会执行禁用JTAG的语句,JTAG-DP可用。

三、扩展:启动模式

三种启动模式对应的存储介质均是芯片内置。控制启动模式的管脚BOOT0和BOOT1,它们在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。

1) BOOT0=0 BOOT1=x从用户闪存启动,为正常的工作模式,用户闪存=芯片内置的Flash。

2)BOOT0=1 BOOT1=1从内置SRAM启动,SRAM掉电后数据就丢失,这种模式可用于调试。SRAM=芯片内置的RAM区,即内存。

3)BOOT0=1 BOOT1=0 从系统存储器启动,这种模式启动的程序功能由厂家设置;系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROROMM区。

参考文章:
STM32芯片的PB3 PB4 PA15引脚如何用作普通端口
程序禁用swd-jtag功能,如何用swd下载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/505001
推荐阅读
相关标签
  

闽ICP备14008679号