[其他ST产品] STM32F103屏蔽JTAG/SWD 以及PC13,PC14,PC15的RTC晶振禁用。

[复制链接]
841|8
 楼主| xiyaoko2365 发表于 2023-11-21 15:19 | 显示全部楼层 |阅读模式
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。

71327655c59d156fce.png

479655c59e3504e6.png
根据上面的图时JTAG/SWD下载调试的几个I/O口对与做成普通I/O需要禁用下载调试功能才可设置成普通的I/O来控制。

 楼主| xiyaoko2365 发表于 2023-11-21 15:20 | 显示全部楼层
标准库里在配置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口使用。
 楼主| xiyaoko2365 发表于 2023-11-21 15:20 | 显示全部楼层
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭JTAG的PB3 PB4 PA15的功能,作为普通I/O口使用,不影响SWD的下载调试。
 楼主| xiyaoko2365 发表于 2023-11-21 15:20 | 显示全部楼层
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,
ENABLE);//单独关闭PB4的JTAG功能,将PB4做为普通I/O使用。
 楼主| xiyaoko2365 发表于 2023-11-21 15:20 | 显示全部楼层
配置程序如下:
  1. void GPIOInit(void) //IO初始化
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;

  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  5.        
  6.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);
  7.         //单独禁用PB4的JTAG功能
  8.         //(其余的也时一样的操作,想配置的这几个I/O口对应的关闭JTAG的功能)

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

  12. }

 楼主| xiyaoko2365 发表于 2023-11-21 15:21 | 显示全部楼层
2.PC13,PC14,PC15的RTC晶振屏蔽
对于PC13,PC14,PC15这几个管脚也是有特色功能要作为普通I/O口需要对应禁用掉。
通过芯片手册了解PC14的OSC32_IN 与PC15的OSC32_OUT 以及PC13的TAMPER管脚的说明。
49607655c5a76b6f9d.png
 楼主| xiyaoko2365 发表于 2023-11-21 15:21 | 显示全部楼层
在配置普通I/O输出模式下的PC13,PC14,PC15的管脚速度被限制在了2MHZ。 92844655c5a8b1fa1a.png
 楼主| xiyaoko2365 发表于 2023-11-21 15:22 | 显示全部楼层
根据说明进行对标准库中的代码进行屏蔽功能,变成普通I/O口使用。标准库代码如下操作:
  1. void GPIOInit (void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.    
  5.     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE );
  6.     PWR_BackupAccessCmd( ENABLE );// 允许修改RTC和后备寄存器
  7.     RCC_LSEConfig( RCC_LSE_OFF ); //关闭外部低速时钟,PC14,PC15用作普通IO
  8.     BKP_TamperPinCmd(DISABLE);  // 关闭入侵检测功能,PC13用作普通IO

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

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

 楼主| xiyaoko2365 发表于 2023-11-21 15:22 | 显示全部楼层
以上就是对一些I/O口标准库屏蔽操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

511

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部