发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
打印

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

[复制链接]
867|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 王小琪 于 2023-1-9 18:10 编辑

一、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当做普通IO后,无法下载程序怎么办
弊端也随之而来,当你修改程序,重新下载的时候,哦吼,程序下载失败

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

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

四、总结

PA13、PA14一般用来当做下载口,但是如果想要将其当做IO口来用,也是可以的,但是不建议将这两个口来做IO口,毕竟程序下载不进去是更大的麻烦,如果MCU有其他的IO,尽可能选择其他的IO,如果IO都用完了,那你还是选其他IO更多的MCU吧,总之不建议将这两个口当IO来使用。
同时如果发现程序下载不进去的情况,也可以通过上面的将boot0由低接高来试试。








使用特权

评论回复

打赏榜单

21ic小管家 打赏了 20.00 元 2023-02-08
理由:签约作者奖励

评论
王小琪 2023-1-15 09:19 回复TA
@畅想天子 :复位键拉低这种方式我没试过,我都是用的改boot脚 
畅想天子 2023-1-15 09:05 回复TA
复位键拉低,可以吗? 

相关帖子

沙发
yaosongjin2018| | 2023-1-13 17:05 | 只看该作者
接出复位按键,程序在初始化的时候延时一段实际,下载程序时先按下复位键在点下载就可以了

使用特权

评论回复
评论
woai32lala 2023-2-8 15:32 回复TA
是的,通常我都用镊子 
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝