STM32F103学习笔记 | 7.使用寄存器点亮LED灯

在这里插入图片描述

int main(void)

{

// 分析指南者硬件原理图得知要实现点亮灯泡需要将PB0设置为低电位,
// 查阅STM32F10x中文手册的端口配置低寄存器,得知一个PB有8个配置位,查阅手册找到了PB0的位置是3:2位置,
// 插入未知知识:将端口配置为通用推挽输出模式,但是手册上面显示要将端口配置为输出模式就需要设置MODE[1:0]>00,所以
// 就要设置MODE[1:0],插入未知知识:将MODE[1:0]设置成了01,
// 1. 配置PB0为通用推挽输出模式,首先找到PB的基地址,然后找到端口0的偏移量,最后为这个地址设置成通用推挽输出模式(00)
在存储器映像这里找到GPIO端口B的基地址是:0X4001 0C00

在这里插入图片描述
然后找到PB0端口的偏移地址是:0x00
在这里插入图片描述
所以PB0的地址是:0X4001 0C00 + 0x00 = 0X4001 0C00
注意:
(1) 在STM32F10x中文手册中为了更好的识别0X4001 0C00中有一个空格,但是在具体代码编写过程中就要删除这个空格,不然会报错
(2) 由于我们是要对地址赋值
在这里插入图片描述
错误示范:(编译器会将0X40010C00识别成有符号的十六进制数据)

// 01是MODE模式设置成了01
// 4*0中的4是因为PB一共有8个端口,一个端口包括:CNFy[1:0]和MODEy[1:0]。
// CNFy[1:0]和MODEy[1:0]都占两个二进制位,所以一共是4位。
// 而且每一个端口的CNFy[1:0]和MODEy[1:0]都是紧挨在一起的,所以移动时是移动4的倍数位。
0X40010C00 |= ((01) << (4*0)) 

正确示范:

// 01是MODE模式设置成了01
// 4*0中的4是因为PB一共有8个端口,一个端口包括:CNFy[1:0]和MODEy[1:0]。
// CNFy[1:0]和MODEy[1:0]都占两个二进制位,所以一共是4位。
// 而且每一个端口的CNFy[1:0]和MODEy[1:0]都是紧挨在一起的,所以移动时是移动4的倍数位。
*( unsigned int * )0X40010C00 |= ((01) << (4*0)) 

将PB0的CNFy[1:0]配置为通用推挽输出模式
查阅STM32F10x中文手册可知:
在这里插入图片描述

二、 配置PB0端口输出低电平

  1. 端口输出数据寄存器(GPIOx_ODR) (x=A…E) 控制着使用寄存器控制端口输出电平的高低。所以需要在STM32F10x中文手册去找到端口输出数据寄存器(GPIOx_ODR) (x=A…E) 。
    在这里插入图片描述

  2. 找到PB的基地址:0X4001 0C00
    在这里插入图片描述

  3. 找到端口输出数据寄存器(GPIOx_ODR) (x=A…E)的偏移地址:0Ch
    (注意:h表示十六进制)
    我们需要将PB0设置成低电平,为啥找的是端口输出数据寄存器(GPIOx_ODR) (x=A…E),而不是其他寄存器?
    在这里插入图片描述

  4. 找到ODR0所在的位置。ODR0在第一个位置,所以设置将ODR0为配置成电平就是:0x0
    (注意:为啥是ODR0,而不是ODR12、ODR10等其他位置呢?)
    在这里插入图片描述

  5. 将PB0配置成低电平的代码编写:

*(unsiged int *0x40010C00 |= ( (1) <<  (4*0) );

三、 开启PB端口时钟
6. 为了降低能耗,在复位的状态下(没有使用的状态下),外设的时钟处于关闭的状态,所以在使用时,需要开启所需要的外设时钟,PB的时钟是“复位和时钟控制(RCC)”控制着,所以我们需要去“复位和时钟控制(RCC)”中去开启PB的时钟。
在这里插入图片描述
2. 由于外设PB挂载在APB2总线上,所以需要找到“APB2 外设时钟使能寄存器(RCC_APB2ENR)”
(注意:日常用语中开启时钟,学术书本上称作使能时钟)
在这里插入图片描述
在这里插入图片描述
7. 找到PB处在“APB2 外设时钟使能寄存器(RCC_APB2ENR)”的使能位
在这里插入图片描述
8. 将PB端口时钟开启,即将位3配置为1。
在这里插入图片描

在这里插入图片描述

  1. 开启PB端口时钟代码编写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/675708.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop3:HDFS的架构组成

一、官方文档 我这里学习的是Hadoop3.1.3版本&#xff0c;所以&#xff0c;查看的也是3.1.3版本的文档 Architecture模块最下面 二、HDFS架构介绍 HDFS架构的主要组成部分&#xff0c;是一下四个部分 1、NameNode(NN) 就是Master节点&#xff0c;它是集群管理者。 1、管…

如何用virtualbox 来跑openwrt 镜像?

1.下载好openwrt源代吗&#xff0c;编译之前先配置&#xff0c;让编译产生x86的virtualbox 镜像&#xff1a; 编译完成之后会产生vdi镜像文件&#xff0c; 在virtualbox 中创建一虚拟机&#xff0c;类型选择linux,版本other linux 64: 内存选择512&#xff1a; 这个地方把镜像…

微信小程序03: 获取不限制的小程序二维码

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 上文小总结1.1.2 上文传送门 2. 获取不限制二维码操作2.1 准备工作2.1.1 请先复制00篇的统一封装代码2.1.2 修改配置文件中的参数 2.2 具体代码使用与注释如下2.2.1 业务代码如下2.2.2 代码解释(一)[无需复制]2.2.3 创建Base6…

初识C语言——第十四天

指针 总结&#xff1a;指针变量是用来干啥的呢&#xff0c;一是用来存放别人的地址的&#xff0c;指针是有类型的&#xff0c;这个类型是如何写的&#xff1b;二是当我有一天通过*(解引用符&#xff09;找到我所要找的对象&#xff0c;来操作所指向的对象。 #define _CRT_SECUR…

软件测试--接口测试

接口测试&#xff1a;直接对后端服务的测试&#xff0c;是服务端性能测试的基础 接口&#xff1a;系统之间数据交互的通道 接口测试&#xff1a;校验接口响应数据与预期数据是否一致

06-07 - 变量的高级主题

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 变量值的替换2. 变量的模式替换3. 规则中的模式替换4. 变量值的嵌套使用5. 命令行变量6. 环境变量7. 目标变量&#xff08;局部变量&#xff09;8. 模式变量9. 工程 1. 变量值的替换 使用指定字符&#xff08;串&#xff09;替…

DMAR: [INTR-REMAP] Present field in the IRTE entry is clear 的解决办法

问题描述 在使用FPGA开发PCIe的MSI-X中断相关功能时&#xff0c;一次测试过程中dmesg打印出如下错误&#xff0c;使用cat /proc/interrupts查看FPGA的PCIe驱动程序未收到MSIX中断。使用的系统为基于Intel x86_64的linux&#xff08;RHEL8.9&#xff09;&#xff0c;基于Xilinx …

SQL注入实例(sqli-labs/less-1)

初始网页 从网页可知传递的参数名为 id&#xff0c;并且为数字类型 1、得知数据表有多少列 1.1 使用联合查询查找列数&#xff08;效率低&#xff09; http://localhost/sqli-labs-master/Less-1/?id1 union select 1,2 -- 1.2 使用order by查找列数&#xff08;效率高&…

贪心问题 难度[普及-]一赏

目录 #小A的糖果 删数问题 陶陶摘苹果&#xff08;升级版&#xff09; P5019 NOIP2018 提高组 铺设道路 小A的糖果 原文链接: P3817 小A的糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 小 A 有 n 个糖果盒&#xff0c;第 i 个盒中有 a_i 颗糖果。 小 A 每…

V23 中的新功能:LEADTOOLS 展示了它的 EXCEL-lence

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

为什么你的企业需要微信小程序?制作微信小程序有什么好处?

什么是小程序&#xff1f; WeChat小程序作为更大的WeChat生态系统中的子应用程序。它们就像更小、更基本的应用程序&#xff0c;在更大的应用程序&#xff08;WeChat&#xff09;中运行。这些程序为用户提供了额外的高级功能&#xff0c;以便在使用WeChat服务时加以利用。根据…

汽车 - 什么是车轮抱死

车轮抱死分为两种情况&#xff0c;一种是车辆故障层面&#xff0c;另一种是驾驶过程中的物理现象。我们先来说最通俗的刹车车轮抱死吧。 刹车制动车轮抱死 车轮停止轴向转动就是抱死&#xff0c;有速度的情况下抱死车轮&#xff0c;如果车辆的惯性动能大于轮胎抓地力&#xff0…