文章目录

  • 如何识别芯片
  • 芯片里面构成
  • 什么是存储器映射
  • 寄存器
  • 使用结构体来封装寄存器列表
  • 补充复习C语言
    • 指针
    • 结构体
    • 结构体指针

如何识别芯片

芯片四周是引脚,左下角的小圆点表示1脚,然后从1脚起按照逆时针的顺序排列,如果没有小圆点,则代表从左边最上方逆时针开始计数

芯片里面构成

如下图所示:

总线矩阵:
总线之间交叉的时候如果有个圆圈则表示可以通信,没有圆圈则表示不可以通信

内核与外设之间要同通信要通过I\S\D总线。需要总线矩阵来冲裁I/S/D冲突的情况。
下面我总结一下STM32里面包含了什么,首先是内核用于控制片上外设,这个内核是ARM公司开发的,而ST设计的是片上外设,外设要与ARM内核通信,需要通过总线,即总线矩阵。

什么是存储器映射

存储器本身不具有地址信息,它的地址是由芯片厂商,给存储器分配地址的过程就称为存储器映射。
给存储器分配地址的过程叫存储器映射,再分配一个地址叫重映射。

通过绝对地址发访问内存单元:


ox40021 c14在我们看来是GPIOH端口ODR的地址,但是在编译器看来这只是一个普通的变量,想让编译器也认识为是一个指针,我们得进行强制类型转换,把它转换成指针。(unsigned int *)0x40021c14 ,然后在对这个指针进行 * 操作。

下面,我来睡一下,(unsigned int *)(0x40021c14)代表将0x40021c14转换为一个指针(也就是一个地址),再取 * 就代表给此地址赋值

寄存器

给有特定功能的内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的就叫做寄存器映射。

下面来深入的讲解一下STM32的寄存器映射
如果一个一个去找外设寄存器的地址,那么将会是非常麻烦,我们可以有一个非常简单的方法,我们可以先确定每一条总线的地址,然后,在总线的地址上找到外设的地址。
首选取找总线的地址:

这个可以从芯片手册上查看。



上面查看的是STM32F76xxx

使用结构体来封装寄存器列表




补充复习C语言

指针

在C语言中,允许一个变量来存放指针,这种变量称为指针变量,指针变量的值就是某份数据的地址。

在定义指针变量p_a的同时对它进行初始化,并将变量a的地址赋予它。通过&来获取a的地址。
通过指针变量来取得数据:

运行结果都为15



总的来讲,我们只需要知道&是代表获取地址,*代表获取数据

结构体

结构体就是一种自定义的数据类型,相当于是一种聚合类型。

如上图所示,代表了2个结构体,stu1和stu2

结构体指针



获取结构体成员



STM32系列--初识寄存器1相关推荐

  1. 【嵌入式开发-STM32】初识STM32

    [嵌入式开发-STM32]初识STM32 文章目录 [嵌入式开发-STM32]初识STM32 一.什么是STM32 二.STM32的拓展 三.如何确定STM32选型 3.1.STM32的命名方法 3. ...

  2. 【STM32】系统控制寄存器

    00. 目录 文章目录 00. 目录 01. 概述 02. IO补偿单元 03. SYSCFG寄存器 3.1 SYSCFG存储器重映射寄存器 (SYSCFG_MEMRMP) 3.2 外设模式配置寄存器 ...

  3. STM32系列单片机在进入main函数前都在干些什么?

    在刚开始学习单片机的时候,一直以为程序启动后就直接进入到了main函数,但是随着学习的深入才发现,程序在进入main函数前其实还要干好多事情.现在就来分析一下,STM32系列单片机程序在进入main函 ...

  4. **浅谈STM32系列单片机的零基础学习方法**

    浅谈STM32系列单片机的零基础学习方法 *很多朋友想必在零基础学习STM32F1这系列单片机时会感觉无从下手,或者不知道写程序时到底是用库函数好还是寄存器好.* 我个人认为一个零基础的朋友可以通过以 ...

  5. STM32系列微控制器入门介绍

    文章目录 目的 基础需求 电路基础 编程语言 入门介绍 官方网站 型号选择 开发方式 开发工具 程序调试 固件烧录 资料说明 总结 目的 STM32是意法半导体(ST)推出的主要基于ARM Corte ...

  6. 【STM32存储器映射-寄存器基地址-偏移】

    前言 在学习STM32的时候,我们看到很多的寄存器编程, 比方说LED灯: //GPIOB.5端口输出高电平GPIOB->ODR|=1<<5; //PB.5 输出高GPIOE-> ...

  7. 【STM32F103ZE】TOF250(TTL)基于STM32系列开发板的运用

    目录 @[TOC](目录) 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通 ...

  8. STM32系列——驱动0.96寸oled显示屏

    一OLED介绍 使用了0.96寸的oled显示屏(SSD1306驱动),128*64像素,查阅店主给的相关资料后知道,这种屏幕有串行通信和并行通信方式,串行通信可以选择IIC(只需要2个管脚SCL.S ...

  9. STM32系列 (一)开发环境的搭建

    STM32简介 STM32是意法半导体(ST)推出一款32位的单片机.STM32具有超低的价格.超多的外设.丰富的型号.优异的实时性.极低的开发成本等优势.STM32凭借其产品线的多样化.极高的性价比 ...

最新文章

  1. 【网络流24题】B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)
  2. 性能监控工具 NewRelic 简介
  3. 生活只是需要一种积极的态度
  4. MPU6050开发 -- 卡尔曼滤波
  5. 直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类
  6. C++彩色数据流动界面
  7. UVa12166 Equilibrium Mobile修改天平(二叉树+dfs)
  8. mysql如何植入到oracle_MySQL性能优化之数据库Recovery改进策略
  9. 什么是GaussDB
  10. Uncaught TypeError: l.push is not a function
  11. java中 CopyOnWriteArrayList 的使用
  12. 【Sublime Text 3】编译环境
  13. Java中异常处理示例
  14. android 仿飞猪日历,vue+vux 仿飞猪app火车票部分(四)
  15. 【织梦插件】xenu软件-网站url和死链提取工具免费下载
  16. 块存储、文件存储和对象存储三者的区别
  17. 2020起重机械指挥模拟考试题库及起重机械指挥实操考试视频
  18. 哀悼日网页变灰的方法
  19. 【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码
  20. 【Leetcode】5 longestPalindrome python解法

热门文章

  1. 10组第一次作业-现代软件工程2017成员介绍
  2. mysql的主从复制原理
  3. 常用的PL/SQL开发原则 by dbsanke
  4. 按功能顺序列出的 HTML 4.01/XHTML 1.0
  5. pack unpakc
  6. 脑与认知科学3 脑神经影像下
  7. windbg断点学习总结
  8. [PM Tools]软件项目进度跟踪表v4.0
  9. springboot中关闭eureka server中已注册服务列表自我保护配置
  10. 获取某个view的高度或者宽度