对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.层叠上下文:是一个名词!是一个性质!此时 ...
随机推荐
- python 获取本机的IP
python 获取本地的IP import socket import fcntl import struct def get_ip_address(ifname): s = socket.socke ...
- c++中为什么可以通过指针或引用实现多态,而不可以通过对象呢?
引言: 在c++中司空见惯的事情就是:可以通过指针和引用可以实现多态,而对象不可以. 那为什么?让我们来解开这神秘的暗纱! 1. 类对象的存储方式: 在一个类的实例中,只会存放非静态的成员变量. ...
- PowerDesigner 中模型设计导出Excel表格
今天项目做设计,客户要看数据设计,需要到处Excel表格.去网上搜索下,把使用总结如下: 已经完成设计的pd设计 打开pd,快捷键Ctrl + Shift + X或者Tools>Exectue ...
- tensorflow简单记录summary方法
虽然tf官方希望用户把 train , val 程序分开写,但实际开发中,明显写在一起比较简单舒服,但在保存数据到 summary 时, val 部分和 train 部分不太一样,会有一些问题,下面讨 ...
- python 中 __init__方法
注意1,__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. class A(object): def __init__(self,name): self.name=name ...
- GLSL传递数组
static const char *microshaderFragSource = { "varying vec4 color;\n" "uniform bool te ...
- C#简单三层结构设计UI、BLL、DAL、Model实际项目应用例子
C#简单三层结构设计UI.BLL.DAL .Model实际项目应用例子 在实际项目中,程序设计都有他的层次结构,比如MVC.MVP.普通的三层结构等等,不过现在用三层结构的相比可能少了,但是也有一些小 ...
- IOS 圆形进度条
// // CCProgressView.h // Demo // // Created by leao on 2017/8/7. // Copyright © 2017年 zaodao. All r ...
- linux的基本操作(LAMP环境搭建)
LAMP 环境搭建 经过前部分章节的学习,你已经掌握了linux的基础知识了.但是想成为一名系统管理员恐怕还有点难度,因为好多单位招聘这个职位的时候都要求有一定的工作经验.然而真正的经验一天两天是学不 ...
- canvas里设置width和css里设置width和js里设置width的区别
canvas.width 和 它的style.width是不一样的: canvas是个画布,有他自己的宽和高(默认是没有单位的纯数字),就是canvas.width和canvas.height的宽和高 ...