首页 > 其他分享 >STM32F103:SWJ调试接口设置成普通的IO口——PA13,PA14,PA15,PB3,PB4

STM32F103:SWJ调试接口设置成普通的IO口——PA13,PA14,PA15,PB3,PB4

时间:2023-11-11 10:12:51浏览次数:40  
标签:STM32F103 PB4 SWJ 引脚 InitStructure GPIO 调试

一、STM32调试端口

  STM32有两种程序调试接口,具体如下:

  SWD调试接口: PA13、PA14共两个引脚。
  JTAG调试接口: PA13、PA14、PA15、PB3、PB4共五个引脚。

   

  单片机启动后,初始状态这五个引脚就默认是调试接口。而实际使用中,一般只使用 SWCLK、SWDIO这两个引脚用做SW调试接口。其余的三个引脚可以空出来,重新定义为普通I/O来使用。如果需要将它们用作普通IO口,需要进行引脚复用,禁止调试功能。

二、SWJ调试端口设置成普通I/O口步骤

  1. 配置复用时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟

  2. 三种调试功能

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);     //全功能SW+JTAG,禁用JTRST,PB4可用
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);   //启用SW,禁用JTAG,PA15、PB3、PB4可用
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);     //完全禁用SW+JTAG,PA13、PA14、PA15、PB3、PB4可用

  SWJ调试端口,只能使用以上3种重映射方法,不可对单独引脚设置。

三、SWJ调试端口设置成普通I/O口程序

/* 禁用 JTAG,PB3、PB4、PA15重定义为普通IO */
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);//使能PA和PB端口时钟
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//启用SW,禁用JTAG,PA15、PB3、PB4可用
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;    //端口配置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);                    //根据设定参数初始化
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                //端口配置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure);                    //根据设定参数初始化

注意:第三种方法,完全禁用SW+JTAG后,就没有程序烧写口了,谨慎使用!!!

标签:STM32F103,PB4,SWJ,引脚,InitStructure,GPIO,调试
From: https://www.cnblogs.com/F-91/p/17825560.html

相关文章

  • 1. 手动移植FreeRTOS V9.00到 Stm32F103C8T6
    记录移植过程,以便以后查看:1.使用cubeMAX配置一个工程a.选择单片机型号: b。设置SWD调试,选TIM4作为系统时钟,systick要用来跑freeRTOS c.NVIC默认使用Group4 配置GPIO,我这里配置了两个引脚,作为LED输出 d,RCC都选外部晶振 e。配置时钟树,HCLK72Mhz  f。project......
  • stm32f103-2023-10-03
    这是当时在“某知道”上自己的一篇原创回答,由于某些原因目前个人在该平台上的所有回答或隐藏或清空了,现经删整之后收纳回本人博客。======================================================================================问题链接:https://zhidao.baidu.com/question/1604602......
  • stm32f103移植lvgl
    这篇需做前期工作:https://www.cnblogs.com/njit-sam/p/17699205.htmlLVGL官方主页:https://lvgl.io/当你想快速上手时,点击这个:https://docs.lvgl.io/master/get-started/quick-overview.html这里,官方建议可以先在电脑上模拟,按照步骤一步步来就可以了,笔者选择的是CodeBlocks,配合......
  • 深入探索STM32F103的DMA技术
    标题:深入探索STM32F103的DMA技术导言:STM32F103是一款广泛应用于嵌入式系统开发的32位微控制器。其中,DMA(DirectMemoryAccess)技术是STM32F103系列的重要特性之一,它大幅提高了数据处理性能并降低了处理器的负载。本文将详细介绍STM32F103的DMA技术,让读者更好地了解其原理、应用和......
  • nuttx-on-the-stm32f103c8t6
    https://microcontrollerelectronics.com/nuttx-on-the-stm32f103c8t6/......
  • STM32F103C8T6测试点亮小灯
    目录代码代码#include"stm32f10x.h"//Deviceheaderintmain(void){ // 寄存器操作,stm32有很多寄存器,操作不方便,推荐使用标准库或HAL库// RCC->APB2ENR=0x00000010;// GPIOC->CRH=0x00300000;// GPIOC->ODR=0x00002000; //注意:步骤二中,需引......
  • STM32F103C8在Keil5中烧录后串口工具无法接收到数据(已解决)
    烧录后串口无法接收到数据(默认硬件连线是正确的,只考虑软件配置问题)在通过Keil5烧录程序并成功后,发现串口没有接收到数据烧录成功未报错串口工具无法接收到数据点击魔法棒,进入Debug-Settings,查看Pack-DebugDescription中的Enable是否勾上,发现√上后拔掉下载器并重新插......
  • STM32F103C8T6串口通信
     首先来看一下需要操作的函数,以及配置的步骤:图1                         图2  Code:usart.c#include"usart.h"voidustart_Init(void){GPIO_InitTypeDefGPIO_Init_Ustar;//定义......
  • STM32F103 点亮LED闪烁与仿真
    今天给大家分享一下STM32流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。code:led.c#include"led.h"#include"delay.h"/*GPIO的控制寄存器的配置1、配置输出引脚2、打开对应的输出的寄存器的时钟3、配置引脚......
  • STM32F103内部FLASH及地址表
    在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种......