学习STM32单片机之结构体思想
学习目标:
- 掌握 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单片机之结构体思想相关推荐
- 一起学习C语言:结构体(二)
上一篇<一起学习C语言:结构体(一)> 中,我们了解了结构体的概念与定义形式,以及结构体变量初始化赋值.本章节,我们分析结构体成员访问形式,以及结构数组使用的场景. 章节预览: 4. 结构 ...
- Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝
Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...
- 学习stm32单片机,必备工具和软件,你知道几个?
大家好,我是华维的麦琪. 今天给大家介绍下,学习stm32需要用到那些硬件和软件,对于学习stm32单片机的学习者,要添置必要的学习和开发工具,搭建一个最基本的学习平台,以达到事半功倍的效果. 一.硬 ...
- keil 查看 stm32 io波形_这样学习STM32单片机,从菜鸟到牛人很简单!
我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32呢? 这本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考 ...
- 一起学习C语言:结构体(一)
上一章<一起学习C语言:函数> 中,我们了解了函数的声明形式和程序的编译过程,以及函数的递归调用和函数的指针调用.本章节,我们分析结构体. 章节预览: 结构体 1. 结构体的定义形式 2. ...
- 学习STM32单片机,从菜鸟到牛人就是这么简单
我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习STM32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...
- 基于STM32使用嵌套结构体摸索内存对齐
导读 一.结构体的声明以及初始化 二.结构体成员的内存对齐规则 三.联合体以及嵌套结构体的用法 位段 小端模式 三.位段数据跨字节单位导致的内存对齐现象 用来描述对象特征的各类信息,通常会被整合成记录 ...
- 学习STM32单片机,从菜鸟到牛人就是这样简单
想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习STM32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的是 ...
- 跳过51单片机,直接学习STM32单片机怎么样?
经常有学员问:" 跳过51单片机,直接学STM32单片机怎么样?" 武汉华嵌科技的工程师给大家定心丸:"不管C51有没有落后,学习51都是值得的,不会浪费你的时间和精力, ...
最新文章
- java内存泄漏问题排查
- 独家 | 基于知识蒸馏的BERT模型压缩
- FC8下安装mplayer
- 【存储知识学习】第三章磁盘原理与技术3.1磁盘结构--《大话存储》阅读笔记
- 在linux学习中遇到的问题
- Java多线程之volatile详解
- laravel redis_Redis 之服务器集群配置
- 于.net开发平台项目案例集锦
- 一个长方体玻璃容器从里面量长宽_养观赏鱼用玻璃鱼缸吗?3种常见养鱼容器,另外2种养鱼效果不差...
- RSA加密、解密、签名、校验签名
- C语言实现下载网页的方法【原创】
- Swift 必备开发库 (高级篇) (转)
- 区块链 性能测试工具
- 基于RFID技术的智能交通解决方案
- 天创速盈:拼多多推广效果不好,哪里需要改善?
- vue项目访问路径添加项目名称
- 车辆航向角、横摆角、质心侧偏角
- 可盈可乐研究院 | 2019:区块链+跨境支付”新旧”势力的新一轮角力
- 导入Excle数据至数据库 “外部表不是预期的格式”错误信息
- 工具类APP的推广方式