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

重生归来之挖掘stm32底层知识(1)——寄存器

       概念理解

         要使用stm32首先要知道什么是引脚和寄存器。

        如下图所示,芯片通过这些金属丝与电路板连接,这些金属丝叫做引脚。一般做软件开发是不需要了解芯片是怎么焊的,只要会使用就行。我们平常通过编程来控制这些引脚的输入和输出,一般在开发板上引出来针脚,这些针脚基本上都是我们可编程的,一般叫做GPIO。

         单片机现在存在于生活中的方方面面,高端的像手机电脑,低一些的像家用电器的显示屏,这背后都有单片机的存在。在一些功能少的东西上面用大内存的芯片会导致成本高,所以单片机的内存都非常小,因此其编程语言采用的也是针对底层的C语言。

        通过C语言,可以找到单片机各种外设资源的地址,并进行读和写的操作。每一个外设所占的地址被叫做存储器,其地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,如果给存储器再分配一个地址就叫存储器重映射。

        存储器划分好了之后,在里面还有很多不同外设的负责不同功能的字节。stm32芯片的每个功能都被分配了4个字节(Byte)即32bit来控制,所以这负责控制某个功能的4个字节被称为一个单元。为了方便记忆,为每个单元起个名字,这个名字就是寄存器,取名的过程就是寄存器映射。下图为寄存器起始地址。

         通过外设的起始地址,再加上每个寄存器的起始地址,通过C语言的指针就能找到需要配置的寄存器,通过位与和位或就能对其进行操作。

总结

        简单来说,寄存器就是各个外设对应功能的名字,通过对这些名字进行操作就能实现对我们需要编程的位进行读写操作,从而控制相应引脚的输入输出状态,实现我们想要的功能。


http://www.kler.cn/news/308911.html

相关文章:

  • 华为OD机试 - 阿里巴巴找黄金宝箱(V) - 滑动窗口(Python/JS/C/C++ 2024 E卷 100分)
  • 小程序开关组件
  • ArrayList的扩容机制
  • Spring 源码解读:实现@Scope与自定义作用域
  • 前端开发第三节课
  • 解决使用阿里云DataV Geo在线地图路径访问403问题
  • 深入解析JSON:数据交换的通用语言
  • Spring Boot-国际化(I18N)问题
  • 嵌入式Linux笔试题目
  • 【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
  • Encountered error while trying to install package.> lxml
  • es6中set和map的区别
  • C++速通LeetCode简单第17题-爬楼梯
  • PostgreSQL维护——解决索引膨胀和数据死行
  • 运维的基本概念:服务器和网络基础知识
  • 瑞星微RK芯片的Buildroot构建系统镜像
  • 【Gateway】Gateway Filter Factories
  • Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍
  • 【SpringBoot】调度和执行定时任务--Spring Task(超详细)
  • 数据结构 - 树与二叉树
  • [强化你的LangChain工具创建技能:从基础到进阶]
  • C语言 | Leetcode C语言题解之第413题等差数列划分
  • c语言题目猜凶手问题
  • Vue2中父子组件通信双向绑定
  • 【Java】【力扣】83.删除排序链表中的重复元素
  • TensorRT-LLM——优化大型语言模型推理以实现最大性能的综合指南
  • react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
  • 预训练蛋白质语言模型ESM-2保姆级使用教程
  • C++设计模式(更新中)
  • 数据结构:(OJ141)环形列表