STM32F103单片机J-TAG引脚功能关闭方法

在调试stm32F103c8t6单片机时,将PB4重映射为TIM3_CH1,做为PWM波形输出时,下载程序后PB4口无任何波形,一直为高电平。确认程序无任何问题,于是想到会不会是PB4口被占用了,检查原理图后,发现没有任何外设用到PB4口。于是怀疑PB4被系统功能占用了,仔细看芯片手册后发现,PB4口上电后会被默认为J-TAG口。
在这里插入图片描述
想要将PB4做为普通IO口用,必须将J-TAG功能禁止,J-TAG功能禁止方法如下:

在这里插入图片描述
首先在stm32f10x_gpio.c文件中看看关于 禁止下载器功能的三个变量定义。 在这里插入图片描述
GPIO_Remap_SWJ_NoJTRST 意思是 J-TAG 和 SW 功能 中只是禁止了 JTRST引脚,也就是PB4引脚。也就是PB4引脚可以做为普通IO口,其他引脚不能做为普通IO口。
GPIO_Remap_SWJ_JTAGDisable 意思是 SW 下载功能正常,J_TAG下载功能禁止。也就是说PA13、PA14引脚不能做为普通IO口用,PA15、PB3、PB4引脚可以作为普通IO口引脚使用。
GPIO_Remap_SWJ_Disable 意思是 SW 和 J-TAG下载功能相关的引脚全部被禁止了。也就是说下载功能的相关引脚都可以做为普通IO口使用。
使用GPIO_Remap_SWJ_Disable这个命令时要注意,一旦禁止了SW和J-TAG下载功能,单片机就不能通过下载器下载程序了,想要下载程序只能通过串口下载。

在程序中只需要用到PB4口就行,所以可以使用GPIO_Remap_SWJ_NoJTRST这个命令,只是将PB4口做我普通引脚。其他功能不变。
要关闭J-TAG功能,程序中只需添加下面两行代码:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 				//使能复用时钟功能		
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 			//JTAG-DP Disabled and SW-DP Enabled

由于PB4口是被复用为下载口,所以端口复用功能配置时,首先要使能复用时钟功能,然后再禁止J-TAG功能,设置才有效。如果未开启时钟,关闭J-TAG命令将不起作用。

发布了76 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_20222919/article/details/100539020