求助:小弟现在使用STM32F373RCT6这款芯片,原来使用F103的,由于IO资源使用比较紧凑,基本没什么剩余IO,所以在system_stm32f1xx.c中增加了一个函数 /****************************************************************************** * @功能简介 : 配置SWJ模式 * @参 数 : 无 * @返 回 值 : 无 *******************************************************************************/ ////static void Set_DebugMode(uint32_t SWJ_Mode) ////{ //////// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //////// //////// AFIO->MAPR &= ~AFIO_MAPR_SWJ_CFG; //////// AFIO->MAPR |= SWJ_Mode; ////} 这样可以通过SWDJ的模式切换来释放SWD模式外的3个IO脚 但在STM32F373中,没有AFIO_MAPR这个寄存器,GPIO的复位是通过模式寄存器设置。 如果我在时钟初始化完成后加入一个函数将SWD外的3个脚PA15,PB3,PB4的相关寄存器位清零。 这个操作至少不再如F1下直接SWJ接口的模式切换设定,那F3系列在系统默认初始化的过程中,还是以SWJ(即JTAG+SWD)模式启动,在JTAG和SWD模式切换过程中会有什么隐患在里面?毕竟不再有直接用SWJ接口模式的直接设置,而去单独设置GPIO了 求路过大侠指点 |
作为输入时,外部信号不能碰巧凑成一条JTAG/SWD指令;
作为输出时,PA13、PA4上电默认上下拉状态,不要影响你电路的工作状态。