学习目标:

  • 掌握 STM32 基础知识

学习STM32单片机之------结构体思想


学习内容:

1.我们在操作寄存器的时候,操作的是寄存器的绝对地址,如果每个寄存器都这样操作,那将非常麻烦。
2.我们考虑到外设寄存器的地址都是基于外设基地址偏移地址,都是在外设基地址上逐个连续递增的,每个寄存器占32 个或者16 个字节,这种方式跟结构体里面的成员类似。
3.定义一种外设结构体,结构体的地址等于外设的基地址结构体的成员等于寄存器,成员的排列顺序跟寄存器的顺序一样。这样我们操作寄存器的时候就不用每次都找到绝对地址,只要知道外设的基地址就可以操作外设的全部寄存器,即操作结构体的成员即可。
下面先定义一个GPIO 寄存器结构体,结构体里面的成员是GPIO 的寄存器,成员的顺序按照寄存器的偏移地址从低到高排列,成员类型跟寄存器类型一样。
1 typedef struct {
2 __IO uint32_t CRL;
3 __IO uint32_t CRH;
4 __IO uint32_t IDR;
5 __IO uint32_t ODR;
6 __IO uint32_t BSRR;
7 __IO uint32_t BRR;
8 __IO uint32_t LCKR;
9 } GPIO_TypeDef;
CRL : 端口配置低寄存器
CRH: 端口配置高寄存器
IDR: 端口输入数据寄存器
ODR: 端口输出数据寄存器
BSRR: 端口位设置/清除寄存器
BRR: 端口位清除寄存器
LCKR: 端口配置锁定寄存器


学习总结:

以结构体的思想去定义寄存器,想操作寄存器就变成了操作结构体,这就相当于定义了库


学习STM32单片机之结构体思想相关推荐

  1. 一起学习C语言:结构体(二)

    上一篇<一起学习C语言:结构体(一)> 中,我们了解了结构体的概念与定义形式,以及结构体变量初始化赋值.本章节,我们分析结构体成员访问形式,以及结构数组使用的场景. 章节预览: 4. 结构 ...

  2. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝

    Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...

  3. 学习stm32单片机,必备工具和软件,你知道几个?

    大家好,我是华维的麦琪. 今天给大家介绍下,学习stm32需要用到那些硬件和软件,对于学习stm32单片机的学习者,要添置必要的学习和开发工具,搭建一个最基本的学习平台,以达到事半功倍的效果. 一.硬 ...

  4. keil 查看 stm32 io波形_这样学习STM32单片机,从菜鸟到牛人很简单!

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32呢? 这本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考 ...

  5. 一起学习C语言:结构体(一)

    上一章<一起学习C语言:函数> 中,我们了解了函数的声明形式和程序的编译过程,以及函数的递归调用和函数的指针调用.本章节,我们分析结构体. 章节预览: 结构体 1. 结构体的定义形式 2. ...

  6. 学习STM32单片机,从菜鸟到牛人就是这么简单

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习STM32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...

  7. 基于STM32使用嵌套结构体摸索内存对齐

    导读 一.结构体的声明以及初始化 二.结构体成员的内存对齐规则 三.联合体以及嵌套结构体的用法 位段 小端模式 三.位段数据跨字节单位导致的内存对齐现象 用来描述对象特征的各类信息,通常会被整合成记录 ...

  8. 学习STM32单片机,从菜鸟到牛人就是这样简单

    想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习STM32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的是 ...

  9. 跳过51单片机,直接学习STM32单片机怎么样?

    经常有学员问:" 跳过51单片机,直接学STM32单片机怎么样?" 武汉华嵌科技的工程师给大家定心丸:"不管C51有没有落后,学习51都是值得的,不会浪费你的时间和精力, ...

最新文章

  1. java内存泄漏问题排查
  2. 独家 | 基于知识蒸馏的BERT模型压缩
  3. FC8下安装mplayer
  4. 【存储知识学习】第三章磁盘原理与技术3.1磁盘结构--《大话存储》阅读笔记
  5. 在linux学习中遇到的问题
  6. Java多线程之volatile详解
  7. laravel redis_Redis 之服务器集群配置
  8. 于.net开发平台项目案例集锦
  9. 一个长方体玻璃容器从里面量长宽_养观赏鱼用玻璃鱼缸吗?3种常见养鱼容器,另外2种养鱼效果不差...
  10. RSA加密、解密、签名、校验签名
  11. C语言实现下载网页的方法【原创】
  12. Swift 必备开发库 (高级篇) (转)
  13. 区块链 性能测试工具
  14. 基于RFID技术的智能交通解决方案
  15. 天创速盈:拼多多推广效果不好,哪里需要改善?
  16. vue项目访问路径添加项目名称
  17. 车辆航向角、横摆角、质心侧偏角
  18. 可盈可乐研究院 | 2019:区块链+跨境支付”新旧”势力的新一轮角力
  19. 导入Excle数据至数据库 “外部表不是预期的格式”错误信息
  20. 工具类APP的推广方式

热门文章

  1. 淘宝API学习之道:淘宝TOP之API接口接入教程
  2. 七只熊文库系统,创建自己的百度文库
  3. 关于IE10+不支持条件注释的解决办法
  4. html的样式下拉框的联动,Web框架Ajax实现html下拉框联动
  5. 客户口碑评价监控实施方案
  6. adc0804c语言程序,ADC0804芯片在模数转换电路中的应用研究
  7. 基于PXI/CPCI总线的高速RS422总线板卡
  8. MAC ARM 虚拟机 安装visual studio 2019
  9. Python Pyside2 多线程实现局域网IP扫描
  10. 如何登录锐捷设备(无线篇)