STM32的JTAG与SWD接口禁用问题

我们在用单片机开发产品是无可避免的会使用到JTAG或者SWD接口或者是硬件工程师的粗心大意,或者是因为硬件资源的限制,当我们遇到这些问题的时候就需要复用这些IO口

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

这是STM32官方库的宏定义

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*SWD使能、JTAG使能但是不包括JNRST引脚 */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*SWD使能、JTAG失能 */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*SWD与JTAG全部失能 */

(1)复用JTAG接口,保留SWD接口

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//

(2)复用JTAG接口与SWD接口

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//

(3)只复用JNRST引脚

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);//

其中有几个情况比较让人头疼

(1)在完全复用了JTAG与SWD接口情况下要是想修改程序怎么办呢?

    答:目前有两种方案:方案一:一般PCB肯定会引出复位引脚的可以先按keil的下载按钮,然后迅速按下PCB的复位按钮,一般可以下载成功

                     方案二:改变BOOT0接到3.3V用串口下载程序,要是串口没有引出来或者BOOT0直接接地了建议方案一

(2)在复用JTAG接口PB4的时候贴主遇到了一些问题

   就是PB4作为输出引脚的时候有些模式不能完全输出高电平或者低电平,要切换电平状态有时候还得切换一下输出模式,可能是STM32的一些设计BUG

 

 

转载于:https://www.cnblogs.com/shazm/p/6689119.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值