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

STM32 中的 CRH 和 CRL 寄存器

STM32 中的 CRH 和 CRL 寄存器

在STM32微控制器中,CRH(Configuration Register High)和CRL(Configuration Register Low)寄存器用于配置GPIO端口的引脚模式。每个GPIO端口都有对应的CRL和CRH寄存器,分别管理该端口低8位(0-7)和高8位(8-15)引脚的配置。

1. 基本概念
  • CRL (Configuration Register Low):控制GPIO端口的低8个引脚(0到7),即PIN_0PIN_7
  • CRH (Configuration Register High):控制GPIO端口的高8个引脚(8到15),即PIN_8PIN_15

这两个寄存器决定了每个引脚的工作模式(输入、输出、复用功能等)以及相关的参数设置,如输出速度、上拉/下拉电阻等。

2. 寄存器结构

每个CRL或CRH寄存器由4个字节组成,每个字节配置一个引脚的属性。具体来说,每个引脚有两位用于配置模式(Mode bits)和两位用于配置配置项(Configuration bits)。以下是它们的具体含义:

模式位(Mode bits)
  • 00: 输入模式(reset state)
  • 01: 输出模式,最大速度10 MHz
  • 10: 输出模式,最大速度2 MHz
  • 11: 输出模式,最大速度50 MHz
配置位(Configuration bits)
  • 对于输入模式:
    • 00: 模拟输入模式(无内部上拉/下拉)
    • 01: 浮空输入(默认状态)
    • 10: 上拉输入(内置上拉电阻)
    • 11: 下拉输入(内置下拉电阻)
  • 对于输出模式:
    • 00: 通用推挽输出
    • 01: 通用开漏输出
    • 10: 复用推挽输出
    • 11: 复用开漏输出
3. 配置过程
    /* 1. 开启时钟 */
    /* 1.1 串口1外设的时钟 */
    RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
    /* 1.2 GPIO时钟 */
    RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

    /* 2. 配置GPIO引脚的工作模式  PA9=Tx(复用推挽 CNF=10 MODE=11)  PA10=Rx(浮空输入 CNF=01 MODE=00)*/
    GPIOA->CRH |= GPIO_CRH_CNF9_1;
    GPIOA->CRH &= ~GPIO_CRH_CNF9_0;
    GPIOA->CRH |= GPIO_CRH_MODE9;

    GPIOA->CRH &= ~GPIO_CRH_CNF10_1;
    GPIOA->CRH |= GPIO_CRH_CNF10_0;
    GPIOA->CRH &= ~GPIO_CRH_MODE10;

4. 注意事项
  • 时钟使能:在配置任何GPIO之前,请确保相关外设的时钟已经被正确使能。
  • 库函数优先:虽然可以直接通过写入寄存器来配置GPIO,但建议使用STM32的标准外设库或HAL库提供的API函数,因为这些库已经封装了底层细节,使得编程更加简单直观。
  • 初始化顺序:在初始化GPIO时,先进行时钟配置,再进行引脚配置,最后才是其他外设的初始化。

http://www.kler.cn/a/488659.html

相关文章:

  • js代理模式
  • HTML - <script>,<noscript>
  • idea全局替换显示不全(ctrl+shift+R)
  • 【Java项目】基于SpringBoot的【校园交友系统】
  • 分布式环境下定时任务扫描时间段模板创建可预订时间段
  • SpringBoot之核心配置
  • React+css+切换主题色
  • 金融智能引擎
  • 力扣每日刷题
  • PySpark学习笔记4-共享变量,内核调度
  • Erlang语言的网络编程
  • 力扣 74. 搜索二维矩阵
  • Flask返回浏览器无乱码方法
  • selenium如何分析网页呢 python爬虫,
  • RK3568-ubuntu旋转显示和触摸
  • 准备机器学习数据的完整指南
  • 开源 vGPU 方案 HAMi 解析
  • Python Excel页眉页脚设置详解
  • FairGuard游戏安全2024年度报告
  • 如何进行单体前后端项目的微服务改造
  • 亚矩阵云手机:跨境出海直播的全方位利器
  • c语言提供后端,提供页面显示跳转服务
  • 【JVM】总结篇之GC日志分析 和 案例
  • 怎么修复损坏或者语法有问题的PDF-免费PDF编辑工具分享
  • 从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
  • 9,STL——vector类