都是stm32的JTAG引脚惹的祸

时间:2023-11-24 21:21:50

转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215

最近在调试08接口的LED显示屏,使用的是自己做的STM32板子。

调试的时候,突然发现显示屏,怎么都不亮,我就开始怀疑人生了。。。。。。。。

难道是程序问题?

吧啦吧啦的查询时序图,修改修改,加延时。。。。然而并没有什么卵用!唉,都让我怀疑是不是引脚接错了,反复测量后发现引脚确实是对的

难道是硬件问题?

我把不需要的程序全部注释掉!

只让STM32相应的08接口的IO口 全部输出高电平,测量结果正常。

只让STM32相应的08接口的IO口 全部输出低电平,结果发现PA15这个引脚输出的是高电平。输出有问题啊!

最后查询STM32f10x系列的手册,结果发现STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。

oh ,no ! 折磨我两天的问题,竟然是JTAG惹的祸!

为了充分利用MCU I/O口的资源,把这些端口设置为普通I/O口。

具体方法如下:

//开启AFIO 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);

注意:AFIO 时钟未设置,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE) 这句不会生效,也就是要先设置时钟,才能配置相应端口

最后,感谢郑老师的指导!