对stm32寄存器的理解(个人理解,大神轻喷)
学习了stm32有一年了,今天想来写写自己对寄存器的理解,帮助那些有志学习stm32的朋友们少走一些弯路。
---------------------------------------------------------------------------------------------------------------------------------------
问题一:stm32位寄存器是什么意思?
32指的是二进制的32位,也就是每一个寄存器是有32位二进制组成(当然部分寄存器的部分位禁止修改)。
问题二:stm32编程的实质是什么?
stm32编程实质上是修改寄存器的32位的具体的值。
问题三:操作寄存器的值的方式有哪些?
直接赋值法,可以用二进制,最大值为1111 1111 1111 1111。也可以用十六进制,最大值为0xFFFF,还可以用十进制,最大值为65535,八进制也可以。他们在给寄存器赋值的时候是等效的。
间接赋值法,就是通过运算(加减,乘除,数组,位运算,甚至是算法将最后的值赋给寄存器)。
问题四:在那个文件里进行逻辑编写?
stm32的文件分为两类,一类是配置文件,另一类是逻辑文件(我自己的定义,书上并没有这种说法)。如果需要动态修改寄存器的值,必须在逻辑文件里使用库函数修改寄存器(库函数的本质就是修改寄存器),不要再配置文件里修改。
问题五:如何快熟识别库函数?
一般来说,setxxx()就是给寄存器设定一个新的值,getxxx()就是获取寄存器的值,另外还有一些使能函数。使用的时候,根据自己的目的去找函数,然后看这个函数修改的对应的寄存器。
问题六:如何才能学好stm32编程?
学习stm32最困难的地方,就是理解功能对应的寄存器的逻辑关系,甚至一个简单的功能往往是多个寄存器的调用的结果,理解寄存器之间的关系,学会常见的调试查错方法,学会查看寄存器的值。
问题七:正确的使用中断
在stm32编程中,多个功能的互相调用的时候,基本上都要用到中断,使用到中断就需要写中断服务函数,中断服务函数的函数名是不可以自定义的。他们在启动文件里面已经定义好了的,自定义的话,CPU找不到在哪里去执行。(很多人第一次写中断服务函数都会写错,笔者第一次写的时候也写错了。)在中断服务函数里面,要先判断是不是发生了中断,一般发生了中断,就会有相对应的中断标志位,执行中断服务函数之后,要先清除中断标志位,然后返回。这虽然没有明文规定,但好像成了一种“习俗”。
--------------------------------------------------------------------------------------------------------------
今天,想来写写stm32的进阶用法(个人认为是进阶用法,高手会觉得这是什么小儿科,哈哈),希望,刚学习的stm32的童鞋少走弯路。
1.stm32引脚的复用。
不同的内部外设复用到不同的GPIO引脚,这些引脚有些不可以任意指定的。比如说,stm32f4xx的TIM8_CH1,它能复用到PC6,但不能复用到PB14上。其他的类似。这些Alternate function 在英文规格书的Alternate function mapping 中可以找到,不是Reference Manual。
2.多个文件的变量的调用
当配置文件的参数设置为变量的时候,这就涉及到变量的调用。可能你在main文件里面修改了变量的值,然后再TIM中需要更新,那么变量你可以直接定义在TIM.c文件中,然后在main文件里面通过 extern 关键字调用。
对stm32寄存器的理解(个人理解,大神轻喷)的更多相关文章
- [OC笔记]@property之个人理解,大神轻拍
/** * 一个简单的对象 * * @author suzhen * */ public class SimpleObjcet { /** * 声明一个age字段 */ private Object ...
- 关于Java8 Stream流的利与弊 Java初学者,大神勿喷
题目需求: 1:第一个队伍只要名字为3个字成员的姓名,存储到新集合 2:第一个队伍筛选之后只要前3人:存储到一个新集合 3:第2个队伍只要姓张的成员姓名:存储到一个新集合 4:第2个队伍不要前2人,存 ...
- javascript深入理解js闭包(个人理解,大神勿喷)
一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...
- 学习Swift--枚举的初步认识 --个人备忘 大神勿喷
枚举定义了一个通用类型的一组相关值,使你可以在你的代码中以一种安全的方式来使用这些值. // 定义枚举的语法 enum Chips { // 定义了薯片的枚举,包含了3种口味的成员 case Toma ...
- ComboBox,三级联动菜单,新入门点小白,有些代码有待优化,大神勿喷
//当前窗体的Load事件 private void provinceANDCity_Load(object sender, EventArgs e) { //连接字符串 string strConn ...
- 使用原生ajax访问后台数据并将其展现在前端页面中(小菜鸟自己整理玩的,大神勿喷)
首先你要有php的环境,关于php环境的搭建,php本地站点的搭建,此处不再重复请看这里:http://www.cnblogs.com/Gabriel-Wei/p/5950465.html我们把wam ...
- 二级联动banner【墨芈原创,大神勿喷】
这个banner效果在几个月前都做了,不过因为代码添乱,而且不宜调用就没发布,经过2周时间间间断断的编写,插件终于搞定了,除框架外其它都开源发布,至于框架没给源码是因为还没做好,后期做好了也会发布出来 ...
- C语言简单实现链栈基本几个功能(适合新手看,大神可指正)
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- 理解z-index和css中的层叠顺序问题(大神技术博的读后感?)
一直对 z-index不太理解,今天看到了大神的博客...http://www.zhangxinxu.com/wordpress/tag/z-index/ 1.层叠上下文:是一个名词!是一个性质!此时 ...
随机推荐
- 链接学习之obj文件探索
Windows的gcc环境,往官网http://sourceforge.net/project/showfiles.php?group_id=2435 下载MinGW,安装,安装完毕后按照包 配置环境 ...
- Mysql获取最大自增ID(auto_increment)的五种方式及其特点
在关系型数据库的表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都有一个唯一标识. 而实际应用中,获取到最近最大的ID值是必修课之 ...
- SpringBoot系统列 5 - 接口版本控制、SpringBoot FreeMarker模板引擎
接着上篇博客的代码继续写 1.接口版本控制 一个系统上线后会不断迭代更新,需求也会不断变化,有可能接口的参数也会发生变化,如果在原有的参数上直接修改,可能会影响线上系统的正常运行,这时我们就需要设置不 ...
- Flutter & Dart 安装在window系统
一.系统环境 flutter最低要求 1,windows7 SP1 64位版本以上,我的系统就是windows 7 sp1 64bit 2,git for windows ,没有安装的需要到这里下载 ...
- Windows更新导致的打印问题
最近很多BarTender用户都出现了打印问题,如3700错误消息及3721错误消息.这个问题存在于BarTender的所有版本,这主要是因为什么?又该如何去解决呢? 根据BarTender英文官网提 ...
- 远程连接服务器影像文件进行服务发布以及问题解决【the data item is inaccessible】
场景模拟: 本机安装有arcgis desktop以及arcgis server10.1,server的站点账号为arcgis. 需要发布影像服务并进行切片,使用的影像数据存放在远程服务器上,影像较大 ...
- Scala 中方法扩展实践
前言 这个名字不知道取得是否合适,简单来说要干的事情就是给某个类型添加一些扩展方法,此场景在各种语言中都会用到,比如 C# 语言,如果我们使用一个别人写好的类库,而又想给某个类库添加一些自己封装的方法 ...
- [python]socket.listen(backlog)中的backlog含义
http://www.nosa.me/2015/09/16/socket-listenbacklog-%E4%B8%AD-backlog-%E6%8C%87%E7%9A%84%E6%98%AF%E4% ...
- 浏览器打开exe文件
<win-r> regedit 打开注册表,然后自定义协议 自定义协议注册表.reg 打开后导入 Windows Registry Editor Version 5.00 [HKEY_CL ...
- markdown 基本语法(转载)
最近感觉一直使用富文本编辑器写东西,感觉有点烦,所以就试着学习了一下简单的markdown编辑器的使用 原文地址:http://www.jianshu.com/p/815788f4b01d markd ...