STM32复习笔记(五) —— GPIO锁定机制
STM32复习笔记(五) —— GPIO锁定机制
1.GPIO 锁定机制
锁定机制可以锁定 IO 口的配置,锁定一个端口位之后,直至下一次复位之前,将不能再更改端口位的配置
2.本例程软件设计思路
1)初始化时即锁定 GPIOB 的 GPIO_Pin_0 配置
2)确认锁定后再尝试修改 GPIOB 的 GPIO_Pin_0 配置为推挽输出模式,10MHz
GPIOx CRL and CRH 寄存器复位值为 0x44444444,即默认浮空输入模式,所以锁定后引脚当前的配置为默认配置,如尝试修改不成功,即表明锁定机制生效
3.代码编写
于 main.c 中编写代码
#include "stm32f10x.h"#define USE_GPIO_LCKR 1 //1锁定 0不锁定typedef enum
{S_GPIO_Mode_OUT = 0x01, //输出, 速率 10MHzS_GPIO_OType_PP = 0x00 //通用推挽输出}GPIOA_Config_TypeDef;int main(void)
{//GPIO_Pin_0 配置uint32_t spinposl = 0x00; #if USE_GPIO_LCKR//读写 LCKR 寄存器uint32_t stmp = 0x00;
#endif#if USE_GPIO_LCKR/* --------- 锁定 KEY IO 口 配置 --------- --------- --------- - *///GPIOB GPIO_Pin_0 的配置锁定GPIOB->LCKR |= ((uint32_t)0x01 << spinposl);//写序列GPIOB->LCKR |= ((uint32_t)0x01 << 16);GPIOB->LCKR &= ~((uint32_t)0x01 << 16);GPIOB->LCKR |= ((uint32_t)0x01 << 16);stmp = GPIOB->LCKR;stmp = GPIOB->LCKR;//确认已锁定,锁定的配置为复位值 (即 KEY IO 当前配置为浮空输入模式)if(0x01 == stmp)
#endif{/* --------- KEY IO 口 配置 --------- --------- --------- ------ *///开启 GPIOB 时钟RCC->APB2ENR |= ((uint32_t)1 << 3);//输出模式,10MHzGPIOB->CRL &= ~((uint32_t)0x03 << (spinposl * 4));GPIOB->CRL |= ((uint32_t)S_GPIO_Mode_OUT << (spinposl * 4));//推挽输出模式GPIOB->CRL &= ~((uint32_t)0x03 << ((spinposl * 4) + 2));GPIOB->CRL |= ((uint32_t)S_GPIO_OType_PP << ((spinposl * 4) + 2));}while(1);
}
4.编译及仿真
点击编译,如无错误可进入仿真界面
打开 System Viewer - GPIO - GPIOB 查看 GPIOB 各个寄存器状态
运行前 CRL and CRH 寄存器为复位值 0x44444444
点击运行,锁定机制已生效,但 CRL 寄存器值仍保持复位值
停止并退出仿真,将锁定机制去除,编译后再进入仿真,点击运行
可见,CRL 寄存器值变为 0x44444441,此时锁定机制并未开启
查阅 CRL 寄存器说明
可知 GPIOB 的 GPIO_Pin_0 已配置为推挽输出,10MHz,结果与预想一致
STM32复习笔记(五) —— GPIO锁定机制相关推荐
- 模拟电子线路复习笔记(五) —— 低频功率放大器
模拟电子线路复习笔记(五) -- 低频功率放大器 本文是对模电的第五章的低频功率放大器知识点的笔记总结.全文手写,附有例题解析,帮助加深理解. 1.知识点总结
- STM32复习笔记(十八) —— 高级定时器(输出比较)
STM32复习笔记(十八) -- 高级定时器(输出比较) 1.配置步骤 1)选择计数器时钟 (内部,外部,预分频器) 2)将相应的数据写入TIMx_ARR and TIMx_CCRx寄存器中 3)可设 ...
- 数理统计复习笔记五——假设检验之显著性检验
一.基本概念 在统计中,我们把需要用样本去推断"正确"与否的命题称为一个假设.当然,假设是可以关于参数的,也可以是关于分布的. 通过样本对一个假设作出"对"或& ...
- Struts2学习笔记(五)之异常处理机制
我们在知道在软件开发中的异常处理是很重要的,作为成熟的MVC框架的Struts2也提供了异常处理处理机制,对于一场处理:用户发送请求-->Action控制器-->发现相应的异常--> ...
- Sqlite学习笔记(五)SQLite封锁机制
概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务.所谓支持事务,即需要在并发环境下,保持事务的ACID特性.事务的原子性,隔离性都需要通过并发控制来保证.那么Sqlite的并发控 ...
- 操作系统复习笔记(五)
14.从"互斥","空闲让进","有限等待"3个方面讨论它的正确性.若正确,则证明之.若不正确,说明理由. program sample; ...
- 2023 hnust 湖南科技大学 大三下 嵌入式 期中考试复习笔记
前言 ★:重点 ✦:猜测考点,自己瞎画了很多 ※:补充内容 ❓:还没搞懂的 内容主要来源:教材.PPT.百度百科.AI 重点来源:4-6班 感谢:lyf,lqx 总结得很草率,因为没听过课,也玩不懂 ...
- 郑莉老师c++第五版 复习笔记
本文是郑莉老师c++第五版的复习笔记 文章目录 第0章:学习怎么学习 先修正下之前关于学习的错误认识 1.理科一定要学系统课,不要零零碎碎的学.零零碎碎就算学几十个小时反而也是浪费时间还会误入歧途. ...
- 【XJTUSE项目管理复习笔记】第五章 软件项目成本管理
仅供学习参考,禁止商用与转载 项目管理复习笔记 第五章 软件项目成本管理 项目成本管理的主要过程 项目成本管理:包括用来确保在批准的预算范围内完成项目的必要过程 项目成本管理的主要过程:计划成本管理➡ ...
最新文章
- Serverless 下的微服务实践
- 每日一皮:死循环的深刻理解...
- 1027:输出浮点数
- spring+redis自主实现分布式session(非spring-session方式)
- iOS弹窗UIAlertController的使用
- mybatis--关于接口参数注解的几个小问题
- 电路布线问题的动态规划实现(java)
- GAN的评价图像评价指标(IS和FID)
- 搭建测试环境详细步骤
- 访问php网页显示源代码_关于PHP中获取网页源代码的说明
- android绘制半圆弧线_android实现简单圆弧效果
- 九亿少女的梦(python信息处理)
- 升级IOS10 出现的兼容性的问题
- Linux Github 使用 ssh 登录及推送 - 一站式教程
- style计算机词汇,法语词汇学习:计算机及网络词汇(3)
- 《我的菜谱》-西红柿炒鸡蛋
- docker 命令大全
- 类的加载过程(生命周期)
- java备忘录代码和解释_Java备忘录
- 机器学习-利用信息熵来学习如果分辨好西瓜