禁用STM32F103中JTAG/SWD和RTC晶振的方法详解

STM32F103屏蔽JTAG/SWD 以及PC13,PC14,PC15的RTC晶振禁用

1.关于JTAG/SWD屏蔽
2.PC13,PC14,PC15的RTC晶振屏蔽

1.关于JTAG/SWD屏蔽
STM32F103系列上的一些IO口在标准库上想要做成普通IO口时的配置。
通过芯片手册JTAG/SWD的管脚PB3,PB4,PA13,PA14,PA15。


根据上面的图时JTAG/SWD下载调试的几个I/O口对与做成普通I/O需要禁用下载调试功能才可设置成普通的I/O来控制。
标准库里在配置I/O口的时候,有配置到PA13,PA14,PA15,PB3,PB4时可以根据你所需要情况来屏蔽相对应的管脚JTAG/SWD的功能。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //关闭所有的JTAG/SWD功能, PB3 PB4 PA13 PA14 PA15作为普通I/O口使用。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭JTAG的PB3 PB4 PA15的功能,作为普通I/O口使用,不影响SWD的下载调试。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,
ENABLE);//单独关闭PB4的JTAG功能,将PB4做为普通I/O使用。

配置程序如下:

void GPIOInit(void) //IO初始化
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);
	//单独禁用PB4的JTAG功能
	//(其余的也时一样的操作,想配置的这几个I/O口对应的关闭JTAG的功能)

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
 	GPIO_Init(GPIOB, &GPIO_InitStructure);

}

2.PC13,PC14,PC15的RTC晶振屏蔽
对于PC13,PC14,PC15这几个管脚也是有特色功能要作为普通I/O口需要对应禁用掉。
通过芯片手册了解PC14的OSC32_IN 与PC15的OSC32_OUT 以及PC13的TAMPER管脚的说明。

在配置普通I/O输出模式下的PC13,PC14,PC15的管脚速度被限制在了2MHZ。

根据说明进行对标准库中的代码进行屏蔽功能,变成普通I/O口使用。标准库代码如下操作:

void GPIOInit (void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE );
    PWR_BackupAccessCmd( ENABLE );// 允许修改RTC和后备寄存器
    RCC_LSEConfig( RCC_LSE_OFF ); //关闭外部低速时钟,PC14,PC15用作普通IO
    BKP_TamperPinCmd(DISABLE);  // 关闭入侵检测功能,PC13用作普通IO

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;        
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    PWR_BackupAccessCmd(DISABLE);// 禁止修改RTC和后备寄存器
    //BKP_ITConfig(DISABLE);       //禁止TAMPER 中断
}

以上就是对一些I/O口标准库屏蔽操作。

物联沃分享整理
物联沃-IOTWORD物联网 » 禁用STM32F103中JTAG/SWD和RTC晶振的方法详解

发表评论