STM32 寄存器配置笔记——GPIO配置输出

news/2025/2/22 5:37:39/

一、概述

       本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。

二、配置流程

        1)GPIO外设时钟

         通过查找STM32F10xxx中文参考手册得知,GPIO PORT口的时钟配置在RCC_APB2ENR寄存器的第2~6位,如下图:

使能PORTA 和 PORTD 的时钟:

RCC->APB2ENR |= 1 << 2;//enable portA clk
RCC->APB2ENR |= 1 << 5;//enable portD clk

      2) 配置GPIO模式

      PORT A的PIN 8和PORT D的PIN 2配置为通用推挽(PP)输出模式,GPIO速度配置为50MHZ。CRL寄存器配置的是PIN0~7,CRH寄存器配置的是PIN8~15。

GPIOA->CRH &= 0xFFFFFFF0;
GPIOA->CRH |= 0x3;         //GPIO PORTA PIN 8 cfg PP & output 50MHZ
GPIOD->CRL &= 0xFFFFF0FF;
GPIOD->CRL |= 0x3 << 8;    //GPIO PORTD PIN 2 cfg PP & output 50MHZ

              3)配置 IO口输出电平

              有如下几种方式:

              a)配置ODR寄存器

            

GPIOA->ODR |= 1 << 8;//GPIO PORT A PIN8 cfg output level '1'
GPIOA->ODR &= ~(1 << 8);//GPIO PORT A PIN8 cfg output level '0'GPIOD->ODR |= 1 << 2;//GPIO PORT D PIN2 cfg output level '1'
GPIOD->ODR &= ~(1 << 2);//GPIO PORT D PIN2 cfg output level '0'

              b)配置BSRR和BRR寄存器

              

              

	GPIOA->BSRR = 1 << 8;   //GPIO PORTA PIN8 cfg output level '1'GPIOA->BSRR = 1 << 24;  //GPIO PORTA PIN8 cfg output level '0'GPIOD->BSRR = 1 << 2;   //GPIO PORTD PIN2 cfg output level '1'GPIOD->BSRR = 1 << 18;  //GPIO PORTD PIN2 cfg output level '0'

             注:如果出现同时配置BR2和BS2为1即端口需要置位且需要复位,则此时置位生效,电平输出为1。

               

	GPIOA->BRR = 1 << 8;  //GPIO A PIN 8 cfg output level '0'GPIOD->BRR = 1 << 2;  //GPIO D PIN 2 cfg output level '0'

三、ODR和BSRR、BRR的区别

      ODR 可读写,相对耗时序,BSRR和BRR只能写,但不耗时序。由上可知配置PA8输出电平。

ODR寄存器,配置的时候只需配置端口8,其它bit位要保持原样。因此操作如下:

GPIOA->ODR |= 1 << 8;

读取ODR寄存器->或运算->写入

(GPIOA->ODR |= 1 << 8->GPIOA->ODR = GPIOA->ODR | (1 << 8))

而BSRR和BRR寄存器只需:

	GPIOA->BSRR = 1 << 8;GPIOA->BRR = 1 << 8;

 赋值即可,因为如下特性:

          在手册上有如下描述:

即用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。因为BSRR寄存器的操作只有一个动作赋值。


http://www.ppmy.cn/news/1213021.html

相关文章

【原创课设】java+swing+mysql选课管理系统设计与实现

摘要&#xff1a; 随着学校规模的扩大和课程设置的多样化&#xff0c;传统的手工选课管理方式已经无法满足现代教育的需求。因此&#xff0c;开发一款高效、便捷的选课管理系统变得尤为重要。该系统可以提高选课工作的效率&#xff0c;减少人为错误&#xff0c;同时也能为学生…

云端部署ChatGLM-6B

大模型这里更新是挺快的&#xff0c;我参考的视频教程就和我这个稍微有些不一样&#xff0c;这距离教程发布只过去4天而已… 不过基本操作也差不多 AutoDL算力云&#xff1a;https://www.autodl.com/home ChatGLM3&#xff1a;https://github.com/THUDM/ChatGLM3/tree/main Hug…

【C语言】函数的系统化精讲(三)

文章目录 一、递归举例二、递归举例2.1求n的阶乘2.2 顺序打印⼀个整数的每⼀位 三、递归与迭代3.1递归的思考3.2求第n个斐波那契数 总结 一、递归举例 .通过上回&#xff08;【C语言】函数的系统化精讲&#xff08;二&#xff09;&#xff09;我们了解到递归的限制条件&#x…

如何巧妙的从具有重复key的数据中抽提出目标行

1.先看文件1 文件1: 1.txt A0A024FLK4 Q6ZFI6 0 0 0 70 0 0 359 378 A0A024FLK4 Q9AX15 112 0 0 0 0 647 0 673 A0A024FLK4 A0A0P0XZ15 56 0 0 0 92 0 95 156 A0A024FLK5 Q7Y1I9 0 0 0 148 0 0 241 325 A0A024FLK5 Q7Y120 0 0 0 148 0 0 241 324 A0A024FLK5 Q7Y121 0 0 0 148 …

能源监测管理系统有哪些作用与效果?

随着全球能源的不断增加&#xff0c;能源的有限性与环境问题日益严重&#xff0c;用能管理企业需要一种高效的方法来管理能源与利用能源&#xff0c;因此能源监测管理系统成为了一种不可或缺的工具。 能源监测管理系统的重要性 1、实现节能减排的目标 通过系统&#xff0c;可…

Java Web——TomcatWeb服务器

目录 1. 服务器概述 1.1. 服务器硬件 1.2. 服务器软件 2. Web服务器 2.1. Tomcat服务器 2.2. 简单的Web服务器使用 1. 服务器概述 服务器指的是网络环境下为客户机提供某种服务的专用计算机&#xff0c;服务器安装有网络操作系统和各种服务器的应用系统服务器的具有高速…

电脑版微信收到的图片怎么样自动保存到指定文件夹中?

8-5 在平时的工作中&#xff0c;如果你每天都需要接收并保存很多同事发来的图片&#xff0c;如何实现自动保存在微信上接收到的图片呢&#xff1f;本文的方法也许适合你&#xff0c;它可以自动把微信上收到的图片、视频、文件帮你保存到指定地方&#xff0c;可以大大地提高工作…

Oracle(概念含安装)

Oracle是一种关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;是由美国甲骨文公司&#xff08;Oracle Corporation&#xff09;开发的。它是一个客户端/服务器系统&#xff0c;可以在各种操作系统上运行&#xff0c;包括Windows、Linux和Unix等。Oracle的设计重点…