当前位置: 首页 > news >正文

STM32中PC13引脚可以当做普通引脚使用吗?如何配置STM32的TAMPER?

1.STM32中PC13引脚可以当做普通引脚使用吗?

在STM32单片机中,PC13引脚可以作为普通IO使用,但需要进行一定的配置。PC13通常与RTC侵入检测功能(TAMPER)复用,因此需要关闭TAMPER功能才能将其作为普通IO使用。

如果PC13被用作侵入检测引脚(TAMPER),则需要禁用侵入检测功能,否则会导致备份寄存器数据丢失。具体操作是调用BKP_TamperPinCmd(DISABLE);来关闭TAMPER功能。同时,还需要确保VBAT在关机时不掉电,否则也可能导致数据丢失。

对于JTAG调试占用的情况,可以通过调用以下代码,来禁用JTAG功能,这样PA13、PA14、PA15以及PB3、PB4等引脚都可以作为普通IO使用。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

2.如何配置STM32的TAMPER?

配置STM32的TAMPER需要进行多个步骤,包括禁用侵入检测功能、配置相关时钟和引脚模式等。具体如下:

  • 禁用侵入检测功能:使用BKP_TamperPinCmd(DISABLE);来关闭TAMPER引脚的侵入检测功能。
  • 配置相关时钟:通过RCC_APB2PeriphClockCmd函数使能PORTC时钟和AFIO时钟。例如:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
  • 配置引脚模式:将PC13配置为普通IO引脚。可以使用GPIO_InitTypeDef结构体进行配置,示例代码如下:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
  • 关闭LSE:如果使用了LSE(低速外部时钟信号),需要将其关闭,才能将PC14和PC15作为普通IO使用。可以通过RCC_LSEConfig函数实现。例如:
RCC_LSEConfig(RCC_LSE_OFF);
  • 允许修改备份区:使用PWR_BackupAccessCmd(ENABLE);命令来允许对RTC和后备寄存器的修改。
  • 清除侵入事件:在侵入检测事件被检测到并清除后,应该禁止侵入检测引脚TAMPER,然后再重新写入备份数据寄存器前用TPE位启动侵入检测功能,以防止在仍有侵入事件时对备份数据寄存器进行写操作。

        综上所述,配置STM32的TAMPER功能涉及禁用侵入检测、配置时钟和引脚模式等多个步骤,以确保正确实现所需功能。通过遵循上述步骤,可以成功将PC13引脚配置为普通IO使用,并有效管理侵入检测事件。

相关文章:

  • docker搭建普罗米修斯监控gpu
  • 基于 Three.js 的 3D 模型加载优化
  • Python实现人脸识别
  • 【IEEE出版,会议历史良好、论文录用检索快】第四届计算机科学与区块链国际学术会议 (CCSB 2024,9月6-8)
  • 【项目】星辰博客介绍
  • 【Python】使用库 -- 详解
  • 【Chatgpt大语言模型医学领域中如何应用】
  • pico+unity3d移动和转向
  • 项目架构图的最佳实践:绘制、维护与示例
  • element UI :el-table横向列内容超出宽度,滚动条不显示问题
  • http请求网址或网页的全流程
  • 使用 git 和 GitHub 互动
  • Model Import Settings
  • kafka-client如何打印连接日志
  • 类和对象:赋值函数
  • [译]CSS 居中(Center)方法大合集
  • 【5+】跨webview多页面 触发事件(二)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • const let
  • ES6之路之模块详解
  • golang 发送GET和POST示例
  • PHP面试之三:MySQL数据库
  • SegmentFault 2015 Top Rank
  • SQLServer之创建数据库快照
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 今年的LC3大会没了?
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 理清楚Vue的结构
  • 山寨一个 Promise
  • 学习ES6 变量的解构赋值
  • 一天一个设计模式之JS实现——适配器模式
  • 1.Ext JS 建立web开发工程
  • # 数仓建模:如何构建主题宽表模型?
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (10)STL算法之搜索(二) 二分查找
  • (LeetCode 49)Anagrams
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (纯JS)图片裁剪
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (九)信息融合方式简介
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转) Android中ViewStub组件使用
  • .net core 6 集成和使用 mongodb
  • .NET Core 发展历程和版本迭代
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET关于 跳过SSL中遇到的问题
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • /3GB和/USERVA开关
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Conditional注解详解
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网