你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F103:SWJ调试端口设置成普通I/O口——PA13,PA14,PA15,PB3,PB4

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:43
一、SWJ调试端口
9 L  o) N# O+ p6 xSTM32有两种程序调试接口(程序烧写口),具体如下:, H0 W2 y$ ]3 I0 f" F
SWD调试接口: PA13、PA14共两个引脚。! I- \. i3 j' z0 Y$ i9 q5 m
JTAG调试接口: PA13、PA14、PA15、PB3、PB4共五个引脚。! X6 t. a4 _- @  o/ Y
0 H) R) W4 L; G& X- \
单片机启动后,初始状态这五个引脚就默认是调试接口。
0 Y/ s! b5 X% a. I# J! [而实际使用中,一般只使用 SWCLK、SWDIO这两个引脚用做SW调试接口。
% Y: q/ i# L9 ]( {其余的三个引脚可以空出来,重新定义为普通I/O来使用。
1 g" C( O: @' l3 R& x& g' [如果需要将它们用作普通IO口,需要进行引脚复用,禁止调试功能。
1 c+ Y( E# c' H* B  n# m' _1 V2 |4 g+ l3 {" B6 J1 E# k
二、SWJ调试端口设置成普通I/O口步骤7 \9 y% M. N; S' a: m
1. 配置复用时钟, x3 f/ q: w* }6 c3 i
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟
$ b' e5 k7 p+ ~  W! n5 a1) k+ e6 ?& ?5 b0 S
2. 禁用调试功能
; f# p: C  x! P0 [$ w* c* e: OGPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //全功能SW+JTAG,禁用JTRST,PB4可用1 Z& o; N  ?( {  D8 f& U3 C
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //启用SW,禁用JTAG,PA15、PB3、PB4可用
( Z3 ^9 O6 z2 F/ ~7 r0 dGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //完全禁用SW+JTAG,PA13、PA14、PA15、PB3、PB4可用# t( q( b0 M" j( A" i3 t9 z
1' I$ |4 q" T4 z- q
2
7 }# h* @# P# g( H3* c* B5 H- A& K
SWJ调试端口,只能使用以上3种重映射方法,不可对单独引脚设置。; i& K: a( ?$ W- _- J! m: |

" T9 x8 q4 \7 z/ _, e1 G三、SWJ调试端口设置成普通I/O口程序* J8 k  e# R1 j8 |
/* 禁用 JTAG,PB3、PB4、PA15重定义为普通IO */$ n4 {, Q. r' m: D, s# u% P3 F
        GPIO_InitTypeDef  GPIO_InitStructure;
* y) ~% k1 Q9 }9 t        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);//使能PA和PB端口时钟
' E* Z( B: |7 ~% [4 |. a        + g; i: \2 s9 p8 {7 R% K
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟
4 u5 a3 i; ?+ c3 N6 |        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//启用SW,禁用JTAG,PA15、PB3、PB4可用: I1 Z4 Z% _7 s5 G' k+ K+ J; G# p
        # _4 Z! t" u# O" ~$ {; g! X+ b$ i% l8 p
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;        //端口配置
( e9 F" ?' q! R1 v9 X. O" Z/ }        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //推挽输出( X, [% E8 H9 i+ A0 G+ n
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //IO口速度为50MHz
* X! v; V3 o- }! a        GPIO_Init(GPIOB, &GPIO_InitStructure);                                        //根据设定参数初始化; B1 [! E- P9 e9 m4 e% M2 h4 A
        2 ]; I4 i' }3 s9 l/ N, ^# v& A
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                                //端口配置4 a% {" k6 I3 p$ }4 T% h
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //推挽输出
1 p$ O. S9 C/ v5 N        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //IO口速度为50MHz
3 U- p6 d: |; }$ E0 x1 n        GPIO_Init(GPIOA, &GPIO_InitStructure);                                        //根据设定参数初始化. x3 B, y& F) {. V( E
7 c. i. `$ j' ~  p+ T) y# S
  F: l: Z: G% R* y1 w  T

/ _  M2 Z6 R" ?& u4 V7 Q! G
收藏 评论0 发布时间:2022-5-3 13:43

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版