对于M3系列
如下图
可以看出,有5个引脚不能直接当作普通IO口使用,而是被调试接口占用,如果需要正常使用这5个IO口,有以下几个步骤:
根据下表
观察得出结论:通过调试SWJ-CFG[2:0]的位可以释放自己需要使用的IO口
该位的寄存器:
调试该寄存器的第24位~26位即可。如图
在关闭相应的接口方式后,即不能再使用这种方式下载程序了,在编译下载时则会出现错误。
一般我们都设置为关闭JTAG-DP,启用SW-DP,这样PA15,PB3,PB4就可以当作正常IO口使用,通过PA13,PA14下载程序。
当然配置之前需要使能AFIO的时钟。
对于M4系列
配置M4系列不用这么麻烦,可以直接设置keil为SWD或JTAG接口模式。
又因为对于M4系列,系统上电后,所有引脚都是AF0复用,如图
所以在设置成SW模式的情况下,要想使用PA15,PB3,PB4这些引脚做通用IO,只要不配置复用模式,直接配置成通用输入或通用输出就行,或者配置成其他的AF口(除了AF0的其他口)即可,具体的可以查看数据手册。
而PA13 PA14如果要配置成普通IO,也可以配置成通用输入或通用输出。
注意:PA13 PA14一旦初始化为普通IO, SWD将不再好使用,因为每次板子上电启动会去执行程序,程序里已经配置成了普通IO,要解决该问题,可以采取延迟初始化或者硬件上提供一个判断条件,在什么条件下的时候可以去初始化为普通GPIO。这样就不会导致板子重新启动后无法烧录程序。所以一般不使用这两个引脚。
一般都是通过keil设置成SW模式而不是JTAG模式,因为配置SW模式能直接使用五个引脚中的三个引脚,JTAG只能使用两个。