STM32将PA13/PA14当做普通IO使用,无法下载程序解决方法

文章讲述了STM32使用JLINK下载程序的两种方式——JTAG和SWJ,指出SWJ因节省IO口和布局优势而常见。详细介绍了如何将PA13和PA14从SWDIO和SWCLK转换为普通IO口的步骤,并警告这样操作后会阻止程序下载,需通过改变Boot0状态来恢复下载功能。建议避免使用PA13和PA14作为IO口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、STM32使用JLINK下载程序两种方式的区别
STM32使用JLINK下载程序有两种方式,一种是JTAG一种是SWJ。区别是JTAG需要20个插头,SWJ只需要4个插头。所以出于种种原因,节约IO口啦,便于布局走线啦,减小PCB的尺寸啦等等原因,一般选择SWJ下载方式。

SWJ下载需要四个引脚,分别是VCC、GND、PA13/SWDIO、PA14/SWCLK。即只需要单片机的两个IO即可。我们可以看到PA13和PA14默认功能即为SWDIO和SWCLK,所以不需要进行任何配置,即可进行程序下载。相反,如果想要将其当做普通IO,才需要进行一系列配置。

常规的SWJ下载口硬件连接如下,四个引脚分别为VCC,SWDIO接上拉电阻、SWCLK接下拉电阻、GND。所以当PA13,P14当下载口的时候,用万用表测量PA13为3.3V,PA14为0V。
 

二、如何将PA13/PA14当做普通IO使用
使能GPIOA,AFIO复用时钟
禁用SWD下载
配置GPIO

 GPIO_InitTypeDef  GPIO_InitStructure;

         

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);         //使能PA端口AFIO时钟        

 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE);//禁用SWD下载

        

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;                                 

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 

 GPIO_Init(GPIOA, &GPIO_InitStructure);                                         

 GPIO_SetBits(GPIOA,GPIO_Pin_13|GPIO_Pin_14);
 int main(void)

 {                          

        LED_Init();

           while(1)

        {

                LED0=0;

                GPIO_SetBits(GPIOA,GPIO_Pin_13);        

                GPIO_SetBits(GPIOA,GPIO_Pin_14);        

        }         

 }


主函数里面是PA13和PA14输出高电平,万用表测量确实都为高电平,说明程序下载成功,且PA13 PA14成功配置为IO输出。 

主函数里面是PA13和PA14输出高电平,万用表测量确实都为高电平,说明程序下载成功,且PA13 PA14成功配置为IO输出。

三、PA13和PA14当做普通IO后,无法下载程序怎么办
弊端也随之而来,当你修改程序,重新下载的时候,哦吼,程序下载失败

点开魔术棒发现读不到下载器

本来boot0是连接到GND的,这个时候就需要将boot0连到VCC,然后断电重启,你会发现可以读到下载器了。记得将程序中禁用下载器屏蔽掉,然后重新下载程序。
  
四、总结

PA13、PA14一般用来当做下载口,但是如果想要将其当做IO口来用,也是可以的,但是不建议将这两个口来做IO口,毕竟程序下载不进去是更大的麻烦,如果MCU有其他的IO,尽可能选择其他的IO,如果IO都用完了,那你还是选其他IO更多的MCU吧,总之不建议将这两个口当IO来使用。
同时如果发现程序下载不进去的情况,也可以通过上面的将boot0由低接高来试试。
---------------------
作者:王小琪
链接:https://bbs.21ic.com/icview-3277504-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值