我是靠谱客的博主 愤怒猫咪,最近开发中收集的这篇文章主要介绍STM32禁用JTAG,并使用JTAG引脚,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

STM32禁用JTAG,并使用JTAG引脚为通用IO口

  • 两种禁用模式

    标准库配置:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能相应接口的时钟,以及RCC_APB2Periph_AFIO

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//完全禁用SWD及JTAG
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG
    HAI库配置方式:

    __HAL_RCC_AFIO_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE(); //
    __HAL_RCC_GPIOF_CLK_ENABLE(); //

    /* JTAG-DP Disabled and SW-DP Disabled */
    __HAL_AFIO_REMAP_SWJ_DISABLE(); //完全禁用SWD及JTAG
    __HAL_AFIO_REMAP_SWJ_NOJTAG(); //禁用JTAG

需要注意:禁用前必须要使能对应接口的时钟和RCC_APB2Periph_AFIO复用时钟

  • 产生的副作用

在禁用掉相应的接口方式后,即不能再使用这种方式下载程序了。因此会出现很多人遇到的:“”RAM check failed at :“”或者“NO M-Cortex”.

遇到这个状况,需要再次下载程序,有如下三种办法:

  1. 如果只禁用的JTAG,可以用SWD模式下载程序进去。

    否则只能后续两种,但总体思路都是不认让代码运行起来,不去禁用JTAG及SWD,这时候下载程序。

  2. 采用人工复位,按钮或短接。在程序下载进行到复位的这一步,完成复位动作。短路复位电容,点下载,稍等几秒(这个靠感觉喽),断开短路的电容,OK!大功告成!这是因为复位的时候,禁止JTAG的寄存器也是复位状态,所以JTAG就自动启动,未被禁止。在系统复位的时候默认是开启JTAG与swd的,在点击下载后的2秒内按下复位键即可将程序下载进stm32。

  3. 拉高BOOT0->重新上电->程序不能运行->下载程序-> 拉低BOOT0->重新上电->程序正常运行

注意及总结

根据自己实际需要的禁用方式来禁用JTAG及SWD。只需禁用JTAG,不用完全禁用,就会避免这些问题了。

一开始能正常下载,后来不能下载了,一定是代码配置中出现的问题。细心查找网络资源及代码配置试验后,总结出了出错原因。

参考原文链接:https://blog.csdn.net/qq_27747359/article/details/86483900

最后

以上就是愤怒猫咪为你收集整理的STM32禁用JTAG,并使用JTAG引脚的全部内容,希望文章能够帮你解决STM32禁用JTAG,并使用JTAG引脚所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部