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

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

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:43
一、SWJ调试端口9 A  ^9 Z( k/ m5 C1 x
STM32有两种程序调试接口(程序烧写口),具体如下:
& L& w( S" z. N! uSWD调试接口: PA13、PA14共两个引脚。; A. a% m- _! b% ?. v7 \% T
JTAG调试接口: PA13、PA14、PA15、PB3、PB4共五个引脚。
' o4 l- h; u  d5 ~
1 O5 l3 A! _8 m: y- d单片机启动后,初始状态这五个引脚就默认是调试接口。
9 m& n9 G" G7 u; i5 Z6 V0 k而实际使用中,一般只使用 SWCLK、SWDIO这两个引脚用做SW调试接口。
0 Y4 O. e4 x4 b7 U: |" N& C其余的三个引脚可以空出来,重新定义为普通I/O来使用。9 a" [3 m' j( e# q+ s" }+ Y! {8 J
如果需要将它们用作普通IO口,需要进行引脚复用,禁止调试功能。+ |/ x* Y$ n; S

, y" J' @: Z/ L$ ~3 R' U二、SWJ调试端口设置成普通I/O口步骤
# D/ m1 j7 u7 c; X3 s% R9 P( m% b1. 配置复用时钟
, L8 u0 a  q" C! N" Q! v, @$ CRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟/ z3 T. Z6 x8 t# {- Z7 t$ R
16 U6 ?" D  g$ T
2. 禁用调试功能
# V, l5 D& i2 b; K: H2 [* D: x8 jGPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //全功能SW+JTAG,禁用JTRST,PB4可用/ q7 [8 o, H# u: g) \
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //启用SW,禁用JTAG,PA15、PB3、PB4可用
5 c0 M! G& K: n1 t0 S( `3 P* g' wGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //完全禁用SW+JTAG,PA13、PA14、PA15、PB3、PB4可用
: ^4 f, _" A( R14 L) g. X: L& j0 t% D5 D$ w% C* Y" F
2
- W# K, Y1 N2 Q7 p8 ~: f! Y5 z) L3
& o) J. l" Q; S! _9 D( nSWJ调试端口,只能使用以上3种重映射方法,不可对单独引脚设置。
( X; V# V  U+ ^  f" I8 o& ~: U1 H
- ?' [1 b( \9 a# O" c2 I: B三、SWJ调试端口设置成普通I/O口程序; K  \# N: h" _) M
/* 禁用 JTAG,PB3、PB4、PA15重定义为普通IO */% K* E/ \/ O7 L0 @4 s% [6 ]2 Y
        GPIO_InitTypeDef  GPIO_InitStructure;$ y- t" O9 F) b- u" x# V
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);//使能PA和PB端口时钟
6 ~. m& J' I# Z) t        " P) Q' M, f  x8 I
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); //配置复用时钟9 o+ s4 `! s# {, p6 e. H6 J
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//启用SW,禁用JTAG,PA15、PB3、PB4可用( \8 U  f% T! m0 F/ o5 k6 X7 g
        ' S  b8 l$ e% C' }- y+ J0 D
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;        //端口配置, Z) L: e( _6 S5 h* ~
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //推挽输出2 z3 g* `. h0 h
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //IO口速度为50MHz
7 V! v+ u* w3 s: y3 b. ~$ P        GPIO_Init(GPIOB, &GPIO_InitStructure);                                        //根据设定参数初始化  j/ S& ?3 [: \$ u& Y+ Q
       
; a) j6 h, x- ~" J/ b4 K6 M        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                                //端口配置
3 M, U' u/ Q5 U& T5 M        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //推挽输出1 y# u5 d( |1 }5 S( v+ _
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //IO口速度为50MHz. O' K: C& U* n7 V/ j
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                        //根据设定参数初始化4 z5 R9 T9 t/ P
, W; t! o) r2 r* Z

$ l) O) p7 @, q: [$ I* |9 v8 }* m5 O( J
赞 收藏 评论0 发布时间:2022-5-3 13:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版