状态寄存器

MPU6050 I2C master模式调试记录

爷,独闯天下 提交于 2020-03-17 07:53:01
http://blog.csdn.net/airk000/article/details/22945573 MPU6050这个芯片是可以最多外挂5个其他的sensor的(好强大!),所以在将MPU6050调通后也理应对这一部分进行调试,废话不多说,开始说我的调试过程。本文中对i2cset的使用简写,没有总线号和其他参数,读者请自行查阅,相信很好理解的。 调试过程 使能MPU6050。因为MPU6050上点后为sleep状态,所以要首先对其进行使能,让他开始正常工作。如果不这样,那么其他的寄存器也将无法写入值,也就无法开展之后的工作,所以这里一定是先将mpu6050从sleep状态中拉出来: [html] view plain copy i2cset 0x68 0x6B 0 使能MPU6050 I2C MASTER模式。 [html] view plain copy i2cset 0x68 0x6A 0x20 设置MPU6050作为master的I2C速率(400kHz),因为外挂子传感器为HMC5883L,其spec中说明其支持400kHz I2C速率,所以设置成这个。当然MPU6050的master模式还有其他很多速率,请自行查阅spec。 [html] view plain copy i2cset 0x68 0x24 0x0D //只设置速率 or [html] view

CPU体系结构(组成部分)

﹥>﹥吖頭↗ 提交于 2020-03-16 00:27:10
在准备网络工程师考试,里面有些知识点是比较常考的。自己写这篇博客呢,当作是笔记吧,自己看一看也分享给大家一起学习。 这部分的内容就是讲CPU里面的组成结构以及各部分的功能。 CPU的构成:CPU主要由 运算器 、 控制器 、 寄存器组 和 内部总线 构成。 运算器 :由 算术逻辑单元ALU 、 通用寄存器 、 数据暂存器 等组成。程序状态字寄存器接受从控制器送来的命令并执行相应的动作,主要负责对数据的加工和处理。 算术逻辑单元ALU:用于进行各种算术逻辑运算(如与、或、非等)、算术运算(如加减乘除等) 通用寄存器:用来存放操作数、中间结果和各种地址信息的一系列存储单元。常见的通用寄存器如下:     a) 数据寄存器:        AX,累加寄存器,算数运算的主要寄存器;        BX,基址寄存器;        CX,计数寄存器,串操作、循环控制的计数器;        DX,数据寄存器。     b) 地址指针寄存器:       SI:源变址寄存器;       DI:目的变址寄存器;       SP:堆栈寄存器;       BP:基址指针寄存器     c) 累加寄存器:AC,又称为累加寄存器。当运算器的逻辑单元执行算术运算或者逻辑运算的时候,为ALU提供一个工作区。   3.数据暂存器:用来暂存从主存储器读出的数据,这个数据不能存放在通用寄存器中

Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解)

狂风中的少年 提交于 2020-03-15 11:39:12
Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) 1 u-boot.lds 首先了解uboot的链接脚本board/my2410/u-boot.lds,它定义了目标程序各部分的链接顺序。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*指定输出可执行文件为ELF格式,32为,ARM小端*/ OUTPUT_ARCH(arm)/*指定输出可执行文件为ARM平台*/ ENTRY(_start)/*起始代码段为 _start*/ SECTIONS { /* 指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置*、 . = 0x00000000;从 0x0位置开始 . = ALIGN(4); 4字节对齐 .text : { cpu/arm920t/start.o (.text) board/my2440/lowlevel_init.o (.text) *(.text) } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } . = ALIGN(4); .data : { *(.data) } /* 只读数据段

汇编语言学习总结

隐身守侯 提交于 2020-03-13 09:39:46
8086CPU 总共有14 个16位寄存器:         1、通用寄存器:8个         2、指令指针:1个         3、标志寄存器:1个 18位         4、段寄存器:4个 1、通用寄存器:数据寄存器4个 、、、 指针寄存器及变址寄存器4个        a、数据寄存器可以分为 高8位、低8位,可以分别寻址               AX = AH &AL:累加寄存器--------------运算、与外部IO通信               BX = BH & BL:基址寄存器-------------地址索引               CX =CH & CL:计数寄存器-------------计数--------移位指令、循环(loop)               DX = DH & DL:数据寄存器-------------数据传递        b、指针寄存器和变址寄存器               SP(Stack Pointer):堆栈指针寄存器-----------------SS:SP->目前的堆栈位置               BP(Base Pointer):基址指针寄存器------------------SS: BP               SI(Source Index):源变址寄存器 --------------

STM32F4关键寄存器总结

放肆的年华 提交于 2020-03-12 07:53:52
—— 整理自STM32F4中文参考手册(ST)、STM32F4开发指南-寄存器版本(正点原子)、cortex m3与m4权威指南(英文) 目录 NVIC GPIO EXIT USART TIM(2~5) 基本设置 PWM相关 NVIC 此章节与内核相关,未在参考手册中出现,需参考权威指南。 ISER1~8 (Interrupt Set-Enable Registers)中断使能寄存器组。CM4 内核支持 256 个中断,用 8 个 32 位寄存器来控制,每个位控制一个中断。由于STM32F4 的可屏蔽中断最多只有 82 个,所以仅ISER[0~2]有效,其中ISER[0]的 bit0~31 分别对应中断0~31;ISER[1]的 bit0~32 对应中断 32~63;ISER[2]的 bit0~17 对应中断 64~81。设置相应的 ISER 位为 1,使特定中断被使能。 具体每一位对应哪个中断,请参考 stm32f4xx.h 里面的第 188 行处。 ICER1~8 (Interrupt Clear-Enable Registers)中断除能寄存器组。用来清除某个中断的使能。其对应位所代表的中断和 ISER 相同。通过置位来清除中断位。 ISPR1~8 (Interrupt Set-Pending Registers)中断挂起控制寄存器组。其对应位所代表的中断和 ISER 相同

STM32寄存器实现led亮灭

北城余情 提交于 2020-03-12 04:53:46
嵌入式基于寄存器点亮一个LED和8个LED 基于寄存器实现1个LED亮灭 目标: 使用STM32F103R6芯片,PB8引脚接LED的阴极,通过C语言程序控制,从PB8引脚输出低电平,使LED点亮。 用Proteus设计第一个SYM32的LED控制电路 新建Proteus工程 添加元器件 放置元器件 调整元器件位置 放置终端 连线 属性设置 电路图 用到的C语言操作 C语言位操作,就是对基本类型变量可以在位级别进行操作。 C语言还支持如下表所示的6种位操作 ![ZZ2Q8YL`JH{3B1C8W5U0P85.png]( http://ww1.sinaimg.cn/large/00852In7gy1gcfcpr2p31j30ai03tglv.jpg ) 代码实现 #include "stm32f10x.h" int main() { RCC->APB2ENR |=1<<3; GPIOB->CRH &=0xfffffff0; GPIOB->CRH |=0x00000003; while(1) { GPIOB->BRR |=0X0080; } } 基于固件库实现1个LED亮灭 STM32固件库 目标、电路图和实现寄存器的相同,下面是实现的代码 实现代码 #include "stm32f10x.h" int main() { GPIO_InitTypeDef strs; RCC

Windows Internals 笔记——线程调度

孤街浪徒 提交于 2020-03-12 03:25:22
1.线程内核对象中的CONTEXT反应了线程上一次执行时CPU寄存器的状态。大约每隔20ms,Windows都会查看所有当前存在的线程内核对象。Windows在可调度的线程内核对象中选择一个,并将上次保存在线程上下文中的值载入CPU寄存器。这一操作被称为上下文切换。Windows实际上会记录每个线程的运行次数。 2.调用CreateProcess或者CreateThread时,系统将创建线程内核对象,并把挂起计数初始化为1。这样就不会给这个线程调度CPU了,因为线程初始化需要时间,我们不想再线程准备好之前就开始执行它。在线程初始化之后,CreateProcess或者CreateThread函数将查看是否有CREATE_SUSPENDED标志传入,如果有,函数返回并让新的线程处于挂起状态。如果没有,函数会将线程的挂起计数递减为0,线程就成为可调度的了。 3.通过创建一个处于挂起状态的线程,我们可以在线程执行任何代码之前改变它的环境(比如优先级)。之后可以调用ResumeThread函数使其变为可调度的,如果调用成功会返回线程的前一个挂起计数,否则返回0xFFFFFFFF。 4.还可以调用SuspendThread来挂起线程,任何线程都可以调用这个函数挂起另外一个线程(只要有线程句柄)。显然线程可以将自己挂起,但是它无法自己恢复。SuspendThread返回线程之前的挂起计数

Modbus

流过昼夜 提交于 2020-03-11 12:12:35
Modbus协议简介 Modbus(RTU / ASCII / TCP)是一种串行通信协议,是Modicon(莫迪康)公司于1979年,为使用可编程逻辑控制器(PLC)而发表的 Modbus协议的详细规格是公开的,只定义了通讯协议而没有规定物理层如通讯介质 Modbus是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的通讯方式 Modbus比其他通信协议使用的更广泛的主要原因有: 【1】公开发表并且无版税要求 【2】相对容易的工业网络部署 【3】对供应商来说,修改移动原生的位元或字节没有很多限制 Modbus功能码简介 代码 功能 寄存器PLC地址 位操作/字操作 操作数量 01H 读线圈状态 00001-09999 位操作 单个或多个 02H 读离散输入状态 10001-19999 位操作 单个或多个 03H 读保持寄存器 40001-49999 字操作 单个或多个 04H 读输入寄存器 30001-39999 字操作 单个或多个 05H 写单个线圈 00001-09999 位操作 单个 06H 写单个保持寄存器 40001-49999 字操作 单个 0FH 写多个线圈 00001-09999 位操作 多个 10H 写多个保持寄存器 40001-49999 字操作 多个 功能码可以分为位操作和字操作两类。位操作的最小单位为BIT,字操作的最小单位为两个字节

VC串口通信实验

孤者浪人 提交于 2020-03-10 10:26:39
实验一:VC串口通信实验 一、实验目的 通过实验让学生了解串口通信的工作原理。 二、实验器材 计算机两台 串口连接线一根 GND(pin5) GND(pin5) TXD(pin3) RXD(pin2) RXD(pin2) TXD(pin3) RTS(pin7) CTS(pin8) CTS(pin8) RTS(pin7) DSR(pin6) DTR(pin4) DTR(pin4) DSR(pin6) 三、实验要求 用VC++对计算机的串口进行编程,并作一个简单的串口查询通讯程序。用一条九针的DB-9串口通讯线将计算机的com1口和com2口相连,com1作为接受口,com2作为发送口。 四、实验步骤 1. 建立项目 打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2. 在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,单击Insert按钮将它插入到我们的Project中来

STM32的GPIO的寄存器配置学习1

对着背影说爱祢 提交于 2020-03-09 16:24:06
本篇文章主要是学习以M3内核的STM32的GPIO的寄存器的配置,为什么要学习寄存器,而不利用库函数呢?我只能说为了让学的知识更加牢固吧!当然,你可以直接去利用库函数,但是如果你能认真读完本篇博客,你会对知识豁然开朗!加油吧! STM32 的每个 IO 端口都有 7 个寄存器( 如果还不懂寄存器是什么,请点击 )来控制。他们分别是: 配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH ; 2 个 32 位的数据寄存器 IDR 和 ODR ; 1 个 32 位的置位/复位寄存器BSRR ; 一个 16 位的复位寄存器 BRR ; 1 个 32 位的锁存寄存器 LCKR ;这里我们仅介绍常用的几个寄存器,我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR 。 可能罗列了这么多的寄存器,小白可能会一头蒙(心想,用的时候再找呗,我想说,那还不如直接记住,对吧,哈哈哈)接下来我会每一个介绍一下,然后会有一个程序说明,仔细看完文章吧! 一、CRL、CRH STM32的每个 IO 口都可以自由编程,但 IO 口寄存器必须要按 32 位字被编辑被访问(因为系统本身是32位),CRL 和 CRH 控制着每个 IO 口的 模式 及 输出速率, 只不过 CRL 是 控制 低8位的GPIO接口( GPIO0至GPIO7 ); CRH 是 控制 高8位的GPIO接口(