使用预定义宏:STM32标准库(如stm32f1xx.h)中定义了AFIO_MAPR_SWJ_CFG和AFIO_MAPR_USART1_REMAP等宏,避免手动计算掩码。 分步操作位域:先清除目标位域,再设置新值。 避免全禁用调试端口:不要设置SWJ_CFG=100,否则可能导致无法通过SWD再次编程芯片。 验证配置 下载程序后,若需确认SWD是否生效: 连接ST-Link到...
tmpreg |= ~DBGAFR_SWJCFG_MASK; } if (NewState != DISABLE) { tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10)); } Tmpreg中保存的是最终要写进寄存器的值 if((GPIO_Remap & 0x80000000) == 0x80000000) { AFIO->MAPR2 = tmpreg; } else { AFIO->MAPR = tmpreg; } } GPIO void L...
tmpreg |= ~DBGAFR_SWJCFG_MASK; if (NewState != DISABLE) tmpreg |= (tmp > 0x15)*0x10) Tmpreg 中保存的是最终要写进寄存器的值 if((GPIO_Remap & 0x) == 0x) AFIO->MAPR2 = tmpreg; else AFIO->MAPR = tmpreg; GPIO 应用实例 ...
AFIO->MAPR &= DBGAFR_SWJCFG_MASK; } else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK) { tmp1 = ((uint32_t)0x03) << tmpmask; tmpreg &= ~tmp1; tmpreg |= ~DBGAFR_SWJCFG_MASK; } else { tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10)); ...