tiangengqiu 发表于 2022-10-30 18:49

APM32F003 SWDIO SWCLK作为GPIO口使用

很多客户对产品进行MCU单片机选型的时候通常会考虑在性能保障的前提下,优先选择性价比高的芯片,极海APM32F003系列单片机是一款32位 Arm® Cortex® M0+内核,供电电压 2.0~5.5V,最高32K flash 最高4K RAM的高性价比的单片机,最低功耗在3.4ua左右,广受市场喜欢,目前在接受客户开发的过程中有遇到需要将JTAG SWDIO SWCLK 对应的应脚 PD1 和 PD2作为GPIO口使用的场景,但是反馈无法正常变化高低电平。使用APM32F003F6P6,开发板测试代码情况如下:    GPIO_Config_T gpioConfig;                gpioConfig.mode = GPIO_MODE_OUT_OD;                gpioConfig.pin = GPIO_PIN_2;                gpioConfig.speed = GPIO_SPEED_10MHz;                GPIO_Config(GPIOD, &gpioConfig);                GPIO_SetBit(GPIOD, GPIO_PIN_2);    while(1)    {      Delay();      GPIO_Toggle(GPIOD, GPIO_PIN_2);   }JTAG SWCLK 对应的PD2设置为开漏输出,使用示波器发现引脚没有电平变化。难道JTAG配置成GPIO需要增加特殊代码?所以赶紧查看用户手册。JTAG接口 JTAGwInterfacewDisable0:使能 JTAG接口; PD1为 SWDIO PD2为 SWCLK1:禁止 JTAG接口; PD1和 PD2为普通 IO手册建议配置PD1 PD2作为普通IO需要设置寄存器 JTAGDIS 为 1void GPIO_EnableSWD(void){*(uint8_t *)(GPIOD_BASE + 0x100) = 0x00;}void GPIO_DisableSWD(void){*(uint8_t *)(GPIOD_BASE + 0x100) = 0x01;}添加GPIO_DisableSWD();使能JTAGDIS 为 1后仍然发现示波器无法变化电平。失能SWD后,断点确实进不去了,函数确实生效了,这时就有点奇怪了。同时修改引脚为PD1惊奇发现,PD1能正常变化高低电平。去除GPIO_DisableSWD();重新编译后,PD1也正常能变化高低电平。难道是PD2输出能力不足?此时将PD2飞线到灯板发现,发光二极管居然能微微亮灭,想起代码是开漏输出的配置,再次修改为GPIO_MODE_OUT_PP,推挽输出模式,发现PD2正常变化高低电平。记录此文,分享,提醒GPIO模式的差异...

软核硬核 发表于 2022-11-3 16:53

一般SWD不会作为正常IO口用吧,除非IO口真的就差这两个引脚,不过一般真不建议。

芯路例程 发表于 2022-11-3 16:54

把SWDIO SWCLK作为GPIO口使用,会不会影响下载程序?

tiangengqiu 发表于 2022-11-8 17:44

芯路例程 发表于 2022-11-3 16:54
把SWDIO SWCLK作为GPIO口使用,会不会影响下载程序?

如果使能 禁止 JTAG接口 寄存器需要重新上电识别,一般Keil会比较难下载,Jflash先擦除程序后恢复正常

芯路例程 发表于 2022-12-4 11:50

tiangengqiu 发表于 2022-11-8 17:44
如果使能 禁止 JTAG接口 寄存器需要重新上电识别,一般Keil会比较难下载,Jflash先擦除程序后恢复正常 ...

那还是不要改成GPIO用比较好!

pentruman 发表于 2022-12-4 20:32

这个最好不要禁用的。            

updownq 发表于 2022-12-4 21:02

swd接口以后怎么下载程序?            

everyrobin 发表于 2022-12-4 21:32

为什么必须使用 SWDIO SWCLK?

woai32lala 发表于 2022-12-5 14:30

everyrobin 发表于 2022-12-4 21:32
为什么必须使用 SWDIO SWCLK?

把CPU资源压榨到极致,最好别用,仿真会出问题

qiufengsd 发表于 2022-12-5 21:56

怎么才能修改为 SWDIO SWCLK口呢?

febgxu 发表于 2022-12-5 23:08

感觉 SWDIO SWCLK必要禁用,否则后期无法下载程序。

jonas222 发表于 2022-12-6 14:27

这个就是复用的功能,需要修改掉的。

Undshing 发表于 2023-1-3 15:45

SWD一般不会作为正常IO口用

macpherson 发表于 2023-2-6 15:51

这个影响单片机的操作的吧。            

modesty3jonah 发表于 2023-2-6 16:00

然后怎么下载程序呢?            

maudlu 发表于 2023-2-7 21:14

设置为普通I/O口,单片机被锁定,不能再次下载程序。

beacherblack 发表于 2023-2-8 19:27

默认就是用于SWJ调试的吧               

juliestephen 发表于 2023-2-8 20:07

需加上拉1K-4.7K左右,不加的话如果你的JLINK内部没有上拉,在下载和调试时有可能会不稳定。反正我是吃过一次亏了。

MLRS 发表于 2023-2-9 08:58

运用挺灵活

wwppd 发表于 2023-3-5 11:16

SWDIO SWCLK也可以实现复用吗
页: [1] 2
查看完整版本: APM32F003 SWDIO SWCLK作为GPIO口使用