控制寄存器配置脚本
51单片机上网 RTL8019AS 寄存器配置C源代码
#include <reg54.h>#include <absacc.h>#include "uip.h"sbit RESET=P4^0;typedef unsigned char uchar;typedef unsigned int uint;#define TX_PAGES 6#define NE_START_PG 0x40 //发送寄存器的首页地址#define TX_START_PG NE_START_PG#define NE_STOP_PG 0x60 //接收寄存器环的末地址+1#define RX_STOP_PG NE_STOP_PG //#define RX_START_PG NE_START_PG + TX_PAGES#define RX_CURR_PG RX_START_PG + 1//下面定义的是RTL8019AS特殊寄存器#define BASE_ADDRESS 0x8000#define CR XBYTE [BASE_ADDRESS+0x0000] //设置CR寄存器地址#define DMA_PORT XBYTE [BASE_ADDRESS+0x1000] //设置远程DMA端口#define RESET_PORT XBYTE [BASE_ADDRESS+0x1800] //设置复位端口//---------定义PAGE0-------------//定义PAGE0中的只读寄存器#define PG0_CLDA0 XBYTE [BASE_ADDRESS+0x0100]#define PG0_CLDA1 XBYTE [BASE_ADDRESS+0x0200]#define PG0_BNRY XBYTE [BASE_ADDRESS+0x0300]#define PG0_TSR XBYTE [BASE_ADDRESS+0x0400]#define PG0_NCR XBYTE [BASE_ADDRESS+0x0500]#define PG0_FIFO XBYTE [BASE_ADDRESS+0x0600]#define PG0_ISR XBYTE [BASE_ADDRESS+0x0700]#define PG0_CRDA0 XBYTE [BASE_ADDRESS+0x0800]#define PG0_CRDA1 XBYTE [BASE_ADDRESS+0x0900]#define PG0_8019D0 XBYTE [BASE_ADDRESS+0x0A00]#define PG0_8019D1 XBYTE [BASE_ADDRESS+0x0B00]#define PG0_RSR XBYTE [BASE_ADDRESS+0x0C00]#define PG0_CNTR0 XBYTE [BASE_ADDRESS+0x0D00]#define PG0_CNTR1 XBYTE [BASE_ADDRESS+0x0E00]#define PG0_CNTR2 XBYTE [BASE_ADDRESS+0x0F00]//定义PAGE0中的只写寄存器#define PG0_PSTART XBYTE [BASE_ADDRESS+0x0100]#define PG0_PSTOP XBYTE [BASE_ADDRESS+0x0200]#define PG0_BNRY XBYTE [BASE_ADDRESS+0x0300]#define PG0_TPSR XBYTE [BASE_ADDRESS+0x0400]#define PG0_TBCR0 XBYTE [BASE_ADDRESS+0x0500]#define PG0_TBCR1 XBYTE [BASE_ADDRESS+0x0600]#define PG0_ISR XBYTE [BASE_ADDRESS+0x0700]#define PG0_RSAR0 XBYTE [BASE_ADDRESS+0x0800]#define PG0_RSAR1 XBYTE [BASE_ADDRESS+0x0900]#define PG0_RBCR0 XBYTE [BASE_ADDRESS+0x0A00]#define PG0_RBCR1 XBYTE [BASE_ADDRESS+0x0B00]#define PG0_RCR XBYTE [BASE_ADDRESS+0x0C00]#define PG0_TCR XBYTE [BASE_ADDRESS+0x0D00]#define PG0_DCR XBYTE [BASE_ADDRESS+0x0E00]#define PG0_IMR XBYTE [BASE_ADDRESS+0x0F00]//定义PAGE1 读写寄存器#define PG1_PAR0 XBYTE [BASE_ADDRESS+0x0100]#define PG1_PAR1 XBYTE [BASE_ADDRESS+0x0200]#define PG1_PAR2 XBYTE [BASE_ADDRESS+0x0300]#define PG1_PAR3 XBYTE [BASE_ADDRESS+0x0400]#define PG1_PAR4 XBYTE [BASE_ADDRESS+0x0500]#define PG1_PAR5 XBYTE [BASE_ADDRESS+0x0600]#define PG1_CURR XBYTE [BASE_ADDRESS+0x0700]#define PG1_MAR0 XBYTE [BASE_ADDRESS+0x0800]#define PG1_MAR1 XBYTE [BASE_ADDRESS+0x0900]#define PG1_MAR2 XBYTE [BASE_ADDRESS+0x0A00]#define PG1_MAR3 XBYTE [BASE_ADDRESS+0x0B00]#define PG1_MAR4 XBYTE [BASE_ADDRESS+0x0C00]#define PG1_MAR5 XBYTE [BASE_ADDRESS+0x0D00]#define PG1_MAR6 XBYTE [BASE_ADDRESS+0x0E00]#define PG1_MAR7 XBYTE [BASE_ADDRESS+0x0F00]//定义PAGE2 只读寄存器#define PG2_PSTART XBYTE [BASE_ADDRESS+0x0100]#define PG2_PSTOP XBYTE [BASE_ADDRESS+0x0200]#define PG2_TPSR XBYTE [BASE_ADDRESS+0x0400]#define PG2_RCR XBYTE [BASE_ADDRESS+0x0C00]#define PG2_TCR XBYTE [BASE_ADDRESS+0x0D00]#define PG2_DCR XBYTE [BASE_ADDRESS+0x0E00]#define PG2_IMR XBYTE [BASE_ADDRESS+0x0F00]//定义PAGE3 寄存器#define PG3_9346CR XBYTE [BASE_ADDRESS+0x0100] #define PG3_CONFIG0 XBYTE [BASE_ADDRESS+0x0300] #define PG3_CONFIG1 XBYTE [BASE_ADDRESS+0x0400] #define PG3_CONFIG2 XBYTE [BASE_ADDRESS+0x0500] #define PG3_CONFIG3 XBYTE [BASE_ADDRESS+0x0600] #define PG3_CONFIG4 XBYTE [BASE_ADDRESS+0x0D00]//以下是特殊寄存器的位定义// CR寄存器#define stop_cmd 0x01 //停止接受或发送数据#define start_cmd 0x02 //启动接受或发送数据#define txp 0x04 //发送数据#define no_dma 0x00 //禁止DMA#define read_dma 0x08 //允许远程DMA读#define write_dma 0x10 //允许远程DMA写#define send_pck 0x18 //发送数据#define abort_dma 0x20 //退出/完成远程DMA#define page0 0x00 //PAGE0选择#define page1 0x40 //PAGE1选择#define page2 0x80 //PAGE2选择#define page3 0xc0 //PAGE3选择// ISR中断状态寄存器#define isr_prx 0x01 //无错误接受数据包#define isr_ptx 0x02 //无错误发送数据包#define rxe 0x04 //接受数据包带有如下错误:CRC错误、包丢失错误以及帧队列错误#define txe 0x08 //过分冲突导致传输错误#define ovw 0x10 //接受缓冲器溢出#define cnt 0x20 //当一个或多个网络计数器的MSB 设置完成时该位被设置。
NiosII寄存器操作模式和配置
本文档版权归作者所有,未经作者同意不得翻印、抄袭或公开传播;转载或引用请征求作者同意.
8
作者:蔡伟纲
感言
一本不错的书可以让你得到很多‘鱼’,而一本真正的好书不但可以让你得
导读
版本
本书基于NiosII IDE(Version: 6.0,Build: 93)编写。
章节框架
本书内容基于‘程序’框架编写,既有主程序也有函数库☺。前5章:中断揭密篇、复
位揭密篇、HAL揭密篇、外设驱动篇以及应用程序二进制接口篇是本书论述的重点,它们一 起构成了主程序部分。而后续的各章节则构成了函数库,供主程序调用,它们的存在是为了 让读者能更好的消化和吸收前5个章节的内容。
最好的学习方法:理论结合实践,带着问题学习! 我读大学的时候,为了自学单片机,曾经反反复复、一遍又一遍的阅读关于51 单片机的书籍,可是1年过后,却还是觉得两手空空,什么也不会。后来有幸参 加全国电子线路竞赛,仅半个月时间,对51单片机就能够运用自如。所以,不 管学习什么东西,能够实际动手并带着问题学习将起到事半功倍的效果。
通常,HAL系统代码和应用代码都在Normal模式下运行。NiosII处理器复位后将自动 进入Normal模式。在Normal模式下,要避免使用通用寄存器bt(r25)和ba(r30),因为 当处理器转入Debug模式的时候,它们的值将被覆盖。同样的,在Normal模式下也不能使 用bstatus(ctl2)(P14)寄存器。
Nios的官方论坛 这是个英文网站,里面都是Nios的高手,其中有很多版主都是Nios的鼻祖 向Altera的FAE求助; 如果你们的产品量很大,或者是个大公司,就可以向Altera或者代理商直接求助:
ATmega16TC1寄存器控制说明
◆普通模式相当于定时器计数器。
可内部计数也可接受外部引脚计数。
(0xFFFF为TOP)●第一步设置工作模式T/C控制寄存器TCCR1B中CS02CS01 CS00位●第二步设置初值T/C寄存器TCNT1H TCNT1L共16位。
(先写高位后写低位)●第三步开定时器中断T/C中断屏蔽寄存器TIMSK中TOIE1置位●第四步开总中断SREG|=BIT(7)内部状态:当到达TOP值时,T/C中断标志寄存器TIFR中TOV1位自动变为1,由此进入中断,且此标志自动清零。
但是需要在中断中重新设置初值。
以下几种模式很少用到中断。
◆CTC模式比较输入模式,当TCNT1的值计数到的值与OCR1A 或ICR1 寄存器的值匹配时,引脚输出电位发生相应变化,且TCNT1从0开始重新计数。
常用来输出50%占空比的方波。
●第一步先设置PD5(OC1A)和PD4(OC1B)为输出●第二步设置工作模式T/C控制寄存器TCCR1A和TCCR1B中WGM13 WGM12 WGM11 WGM10选择CTC的相应模式。
COM1A1 COM1B1 COM1A0 COM1B0选择匹配后具体动作(常用01)CS02CS01 CS00设置预分频●第三步设置TOP值输出比较寄存器OCR1A/ICR1写入TOP值◆快速PWM模式相对于CTC模式,可以人为设置占空比。
具体方法是有两个寄存器,一个储存匹配值,一个储存TOP值。
匹配时清0,达到TOP值时置位。
此方式用于输出脉冲来控制电机。
●第一步先设置PD5(OC1A)和PD4(OC1B)为输出●第二步设置工作模式T/C控制寄存器TCCR1A和TCCR1B中WGM13 WGM12 WGM11 WGM10选择CTC的相应模式。
(以15模式为例子)COM1A1 COM1B1 COM1A0 COM1B0选择匹配后具体动作(常用10)CS02CS01 CS00设置预分频●第三步设置TOP值和匹配值输出比较寄存器OCR1A写入TOP值输出比较寄存器OCR1B写入匹配值注意:此时OC1B能够输出此PWM波形,而因为OCR1A存储了TOP值,所以OC1A 无法输出PWM。
寄存器的编程与控制实验
寄存器的编程与控制实验寄存器是计算机中非常重要的组成部分,它们存储着关键的数据和指令。
在编程和控制实验中,对寄存器的正确使用和控制是至关重要的。
本文将介绍寄存器的编程和控制实验的基本概念和技巧。
一、寄存器的概念和作用寄存器是一种用于存储和操作数据的硬件设备。
在计算机中,寄存器承担着多种重要的角色,如存储临时数据、地址计算、数据传输等。
寄存器有不同的类型,包括通用寄存器、特殊目的寄存器等。
通过编程和控制实验,我们可以更好地理解寄存器的作用和使用方法。
二、编程实验:寄存器的读取和写入在寄存器的编程实验中,我们需要掌握如何读取和写入寄存器中的数据。
首先,我们需要明确寄存器的地址和类型。
然后,通过编写相应的代码,可以实现从寄存器读取数据或向寄存器写入数据。
在实验中,可以使用不同的编程语言和开发工具,比如C语言、汇编语言等。
三、控制实验:寄存器的控制和操作除了读取和写入数据,寄存器还可以用于控制和操作其他硬件设备。
在实验中,我们可以通过编程来控制和操作特定的寄存器,从而实现对其他设备的控制。
例如,我们可以通过设置某个寄存器的值来控制LED的亮灭,或者通过读取某个寄存器的值来获取传感器的数据。
四、实验注意事项在进行寄存器的编程和控制实验时,需要注意以下事项:1.了解寄存器的地址和类型,确保正确读写;2.遵循实验指导书或教师的要求,选择合适的编程语言和开发工具;3.仔细阅读设备的说明书或文档,了解寄存器的功能和使用方法;4.注意编写代码的规范性和可读性,确保代码的正确性和稳定性;5.实验过程中,注意安全操作,避免对设备产生损坏或危险。
总结:通过寄存器的编程和控制实验,我们可以更好地理解寄存器的概念和作用,掌握读取和写入寄存器的方法,并进行寄存器的控制和操作。
这对于我们深入了解计算机硬件和软件之间的联系,以及学习嵌入式系统开发等领域都具有重要意义。
通过实验的练习和实践,我们能够提高自己的编程和控制能力,为未来的职业发展打下坚实的基础。
3.控制寄存器(CR)控制寄存器的内容是用于改变CAN控制
3.4.9.1 交流时序图 • 读周期时序图的Intel模式如图3-42。 • 写周期时序图的Intel模式如图3-44。
图3-42 读周期时序图;Intel模式
图3-44 写周期时序图;Intel模式
(2)接受屏蔽寄存器(AMR) 接受屏蔽寄存器的位配置如表3-14所示。
如果复位请求位被置高(出现),该寄存器 可以被访问(读/写)。接受屏蔽寄存器限定,接 受码与接受滤波的对应位的哪些位是“相关 的”(AM.X=0)或“不予关心的 (AM.X限值如表3-57所示。表中的极 限值符合绝对最大额定值系统(IEC134);所有 电压都是以Vss为参考的。
8.接收缓冲器 接收缓冲器的整体配置和3.4.5.3的第7部分中所描述 的发送缓冲器很相似。接收缓冲器是RXFIFO中可访问的 部分,并被设置为CAN地址20—29之间的范围。 标识符、远程发送请求位和数据长度码,除地址范 围为20—29之外,具有与在发送缓冲器中所描述的相同 含义和配置。 如图3-29所示,RXFIFO共有64字节的报文空间。在 任何特定的时刻,FIFO中可以存贮的报文数取决于各个 报文的长度。如果RXFIFO中没有足够的空间用于新报 文,CAN控制器就会产生一个数据溢出条件。数据溢出条 件存在时,已部分写入RXFIFO的一个报文将被删除。这 种情况会通过状态寄存器和数据溢出中断指示给微控制 器,如果中断使能、且帧直到最后除帧结束的那一位已被 无任何错误地接收(RX报文变为有效)。
3.控制寄存器(CR) 控制寄存器的内容是用于改变CAN控制器 的行为的。这些位可以被相连接的微控制器置位 或复位,微控制器将控制寄存器作为读/写存贮 器来使用。 控制寄存器各位的说明见表3-8。
注: 1、控制寄存器的任何写访问必须设置该位为逻辑0(复位值是逻辑0)。 2、PCA82C200中这一位是用来选择同步模式的。因为这种模式不再被使用,所 以这一位的设置不会影响微控制器。由于软件兼容,这一位是可以被设置的。硬 件或软件复位后,这一位将不改变。此外,被用户软件写入的值是可反映的。 3、此位将总呈现逻辑1。 4、硬件复位期间或总线状态位被置为逻辑1(总线脱离)时,复位请求位被置为 逻辑1(出现)。如果此位被软件访问,一个值的变化将变为可视的,而且会在 内部时钟的下一个上升沿(内部时钟的频率是外部振荡器频率的1/2)首次生 效。在外部复位期间,微控制器不能将复位请求位置为逻辑0(空缺)。因此, 在将复位请求位置为逻辑0后,微控制器必须检查这些位,以确保外部复位引脚 不保持为低。复位请求位的变化是同内部分频时钟同步的。读复位请求位能够反 映出这种同步状态。 复位请求位被置为逻辑0后,SJA1000将会等待: (1)一次总线释放信号(11个隐性位),如果先前的复位请求是由硬件复 位或CPU初始复位引起的。 (2)128次总线释放,如果在重新进入总线在线模式前,先前的复位请求是 由CAN控制器的初始总线脱离造成的;必须说明的是,如果复位请求位被置 位,一些寄存器的值是被修改的 (也可见表3-7)。
MSP430寄存器配置指导
微控网为你准备的 MSP430F 单片机入门必修课
微控网
MSP430F1XX 系列时钟模块图 时基模块结构如上图:
MSP430 系列单片机基础时钟主要是由低频晶体振荡器,高频晶体振荡器,数字控制 振荡器(DCO),锁频环(FLL)及 FLL+等模块构成。由于 430 系列单片机中的型号不同, 而时钟模块也将有所不同。虽然不同型号的单片机的时基模块有所不同,但这些模块产 生出来的结果是相同的.在 MSP430F13、14 中是有 TX2 振荡器的,而 MSP430F11X,F11X1 中是用 LFXT1CLK 来代替 XT2CLK 时钟信号的.在时钟模块中有 3 个(对于 F13,F14)时钟 信号源(或 2 个时钟信号源,对于 F11X、F11X1):
BCSCTL1 基本时钟系统控制寄存器 1
7
6
5
4
XT2OFF TXS DIVA.1 DIVA.0
3 XT5V
2
1
0
Rsel.2 Resl.1 Resl.0
XT2OFF 控制 XT2 振荡器的开启与关闭。 TX2OFF=0,XT2 振荡器开启。 TX2OFF=1,TX2 振荡器关闭(默认为 TX2 关闭)
微控网
句:_BIS_SR(LMP3_bits)和_BIC_SR(LPM3 bits) LPM3 和 LPM3_EXIT
它们的定义是一样的。这里说明在 C 语言环境中有些定义的函数是不可见的。但你可以 从 in430.h 文件看到它们的定义。
DCOCTL DCO 控制寄存器
cctlx捕获比较控制寄存器151413121110ccis1scssccicapoutmodxcciexccioutcovccifxtimera有多个捕获比较模块每个模块都有自己的控制寄存器cctlxcaptmod10选择捕获模式00禁止捕获模式01上升沿捕获10下降沿捕获11上升沿与下降沿都捕获ccisi0在捕获模式中用来定提供捕获事件的输入端00选择ccixa01选择ccixb10选择gnd11选择vccscs选择捕获信号与定时器时钟同步异步关系0异步捕获1同步捕获异步捕获模式允许在请求时立即将ccifg置位和捕获定时器值适用于捕获信号的周期远大于定时器时钟周期的情况
BANK 控制寄存器(BANKCONn:nGCS6 至nGCS7)
存储器类型 = SDRAM [MT=11](4 位) Trcd SCAN [3:2] [1:0] RAS 到 CAS 的延迟
00 = 2 个时钟 01 = 3 个时钟 10 = 4 个时钟
10 00
列地址数
00 = 8 位 01 = 9 位 10 = 10 位
5-15
00
Page 模式下的 Page 模式访问周期 Tacp [3:2]
00 = 0 个时钟 10 = 2 个时钟 00 = 0 个时钟 10 = 2 个时钟
00
Page 模式配置 PMC [1:0]
00 = 正常(1 个数据) 10 = 8 个数据 00 = 正常(1 个数据) 10 = 8 个数据
00
S3C2440A RISC 微处理器
存储器控制器
BANK 控制寄存器(BANON6 BANKCON7 BANKCONn MT 地址 0x4800001C 0x48000020 位 [16:15]
00 = ROM 或 SRAM 10 = 保留(不要使用)
R/W R/W R/W Bank6 控制寄存器 Bank7 控制寄存器 描述 决定 Bank6 和 Bank7 的存储器类型
描述
复位值 0x18008 0x18008 初始状态 11
01 = 保留(不要使用) 11 = 同步 DRAM
存储器类型 = ROM 或 SRAM [MT=00](15 位) nGCSn 前的地址建立时间 Tacs [14:13]
00 = 0 个时钟 10 = 2 个时钟 00 = 0 个时钟 10 = 2 个时钟
00
nOE 前的片选建立时间 Tcos [12:11]
00 = 0 个时钟 10 = 2 个时钟 00 = 0 个时钟 10 = 2 个时钟
EPWMTMSF28335所需配置的EPWM寄存器
EPWMTMSF28335所需配置的EPWM寄存器一.TB模块需要设置的寄存器TBCTL_BITS {// bits descriptionUint16 CTRMODE:2; // 1:0 Counter ModeUint16 PHSEN:1; // 2 Phase load enable Uint16 PRDLD:1; // 3 Active period load Uint16 SYNCOSEL:2; // 5:4 Sync output select Uint16 SWFSYNC:1; // 6 Software force sync pulseUint16 HSPCLKDIV:3; // 9:7 High speed time pre-scaleUint16 CLKDIV:3; // 12:10 Timebase clock pre-scaleUint16 PHSDIR:1; // 13 Phase DirectionUint16 FREE_SOFT:2; // 15:14 Emulation mode1.TBCTL:TB控制寄存器设置TBCTL_REG.BITS.CTRMODE:2 (计数模式设置)TB_COUNT-UP 0x0;TB_COUNT_DOWN 0x1;TB_COUNT_UPDOWN 0x2;TB_FREEZE 0x3;TBCTL_REG.BITS.PHSEN:1 (相位装载使能控制)TB_DISABLE 0x0;TB_ENABLE 0x1; 直接将计数器中的值装载到TBCTR计数控制寄存器中。
TBCTL_REG.BITS.PRDLD:1 (时基周期映射使能)TB_SHADOW 0x0 使能TBPRD映射寄存器,读写TBPRD寄存器地址直接操作映射寄存器,当时基计数器计数值等于0时,映射寄存器内容传送到工作寄存器。
默认状态下TBPRD映射寄存器被使能。
TB_IMMEDIATE 0x1 立即装载模式,不需要等到时基计数器计数值等于0时,就直接将TBPRD的存储地址直接操作工作寄存器中。
AD7934控制寄存器
姓名
ቤተ መጻሕፍቲ ባይዱ
尹二涛
AD7933/7934控制寄存器
AD7933/7934控制寄存器
日期 表1 电源模式选择使用控制寄存器的位电源管理 PM1 0 0 1 1 PM0 0 1 0 1 模式 说明 正常模式 在正常模式下运行,所有电路在任何时候是完全上电 自动关机 在自动关机模式下,AD7933/7934在每个转换结束时进入 模式 模式 全关机 模式 表2 模拟输入选型 通道地址 MODE0=0 MODE1=0 四个单端I/P 通道 ADD1 ADD0 0 0 1 1 0 1 0 1 VIN+ VIN0 VIN1 VIN2 VIN3 VINAGND AGND AGND AGND MODE0=0 MODE1=1 两个全差分 通道 VIN+ VIN0 VIN1 VIN2 VIN3 VINVIN1 VIN0 VIN3 VIN2 MODE0=1 MODE1=0 两个伪差分 通道 VIN+ VIN0 VIN1 VIN2 VIN3 VINVIN1 VIN0 VIN3 VIN2 MODE0=1 MODE1=1 不使用 全关断模式 模式类似于自动关机模式,但可以让部分电源维持1μ s 当AD7933/7934进入该模式,所有电路都断电,信息在 控制寄存器中保存。 自动待机 当AD7933/7934进入该模式,所有的电路部分断电。这种 2011.4.25
姓名
尹二涛
AD7933/7934控制寄存器
日期 控制寄存器 AD7933/7934的控制寄存器是12位的、只写寄存器。数据写入该寄存器使用CS和 WR引脚,该寄存器及位的功能描述如下:在上电状态,控制位的设置默认寄存器 都为0. 最高位 D11 D10 D9 D8 D7 D6 D5 D4 MODE1 D3 MODE2 D2 SEQ1 D1 SEQ0 PM1 PM0 CODING REF ZERO ADD1 ADD0 控制寄存器的功能描述 位号 11 10 9 8 7 6 5 助记符 说明 模式和多种掉电工作模式之间进行选择。 CODING REF ZERO ADD1 ADD0 4 2 1 0 3 MODE1 MODE0 SEQ1 SEQ0 RANGE 该位选择输出编码的转换结果。该位为0时,输出编码是直二进 制文件。该位为1时,输出编码是二进制补码。 该位选择内部或外部参考用于执行转换。该位为逻辑0,外部基 准,应适用于VREF引脚,如果是逻辑1,选择内部参考。 不可用为,始终设置为逻辑0。 这两个地址位用来选择其中任一模拟输入通道,在下一步的转 换中。若序列器不可用或最后一个通道选择的是连续序列时, 序列器的使用描述如表2,选定的输入通道解码如表3。 四个模拟输入的两种工作模式选择引脚。AD7933/7934有四个单 端输入,两个全差分输入,或两个为差分输入。 控制寄存器的SEQ1位用于联同SEQ0序位控制功能。 控制寄存器的SEQ0位用于联同SEQ1序位控制功能。 该位选择AD7933/7934的模拟输入范围。该位为0,模拟输入范围 从0V至VREF;该位为1,模拟输入范围从0V至2*VREF。在此范围 内选择,AVDD必须从4.75V至5.25V PM1 PM2 电源管理位。这两位用来选择电源工作模式,用户可以在普通 最低位 D0 RANGE 2011.4.25
spi寄存器配置说明
0
SP1ST 状态寄存器 7
RECEIVER OVERRUN FLAG
R/C-0 位 7
6 5 4-0
SPI INT ENA 7042H 6 SPI INT FLAG
SPI 中断使能位
5 TX BUF FULL FLAG
4-0 Reserved
R/C-0 名称
R/C-0
RECEIVER OVERRUN FLAG SPI INT FLAG TX BUF FULL FLAG Reserved
7-0 FFTSDLY7--0 R/W-0
位 15--8 7-0
名称 保留位 FFTSDLY
功能描述 FIFO 发送延迟位
SP1PRI 优先级控制寄存器
704Fh
7-6
5
4
3-0
Reserved
SPI SUSP SOFT
SPI SUSP FREE
Reserved
R-0 位
R/W 名称
R/W-0
R-0
6
RXFF INT CLR
5
RXFFI ENA
4-0
TXFFIL4-0
SP1FFRX 15
RXFF OVF Flag
SP1 FIFO 接收寄存器 14
RXFFOVF CLR704BH来自13 RXFIFO Reset
R-0 7
W-0
R/W-1
6
5
RXFF INT
RXFF INT
RXFFIR ENA
Flag
写 1 清除 RXFF OVF Flag 位 写 0,复位是 FIFO 指针位 0 1 重新使能发送 FIFO 操作
00000 接收 FIFO 是空 00001 接收 FIFO 是 1 个字节 00010 接收 FIFO 是 2 个字节 00011 接收 FIFO 是 3 个字节 ……
寄存器设置
I\O端口控制向量组合:P_SystemClock单元设置CPU时钟选择PLL(Fosc)频率选择:P_Timebase_Setup单元Timebase频率选择:P_TimerA_Ctrl单元:时钟源A选择位:时钟源B选择位:TimerA结构:P_TimerB_Ctrl单元:时钟源C选择位:TimerB结构:占空比设置B6-B9:P_SIO_Ctrl(写)单元(SIO串行设备输入输出口):P_UART_Command1(写) 单元为UART 控制口:P_UART_Command2 (写) 单元在写入模式时,为UART 数据发送/接收控制口:P_UART_Command2(读):符号约定:中断源:SPCE061A 单片机的中断系统有14 个中断源分为两个定时器溢出中断、两个外部中断、一个串行口中断、一个触键唤醒中断、7个时基信号中断、PWM音频输出中断。
中断控制单元P_INT_Ctrl(读/写)(7010H)P_INT_Ctrl 控制单元具有可读和可写的属性,其读写时的意义是不同的:写--“1”开中断、“0”关中断;读--中断标志位“1”有中断请求,“0”无中断请求:清除中断标志控制单元P_INT_Clear(写)(7011H):只要将该寄存器中对应的中断位置“1”即可清除该中断状态标志位。
激活和屏蔽中断控制单元P_INT_Ctrl_New(读/写)($702DH)中断控制指令:(SPCE061A 中断除UART 中断外,所有的中断均需软件清除标志位,即将P_INT_Clear 中相应的中断位清零。
即可将中断请求撤销。
而UART 中断,则是硬件自动清零)中断源判断:因为SPCE061A 中断源多于中断入口地址,所以当CPU响应中断后,经中断入口地址进入中断服务程序,通过读P_INT_Ctrl 可判断产生中断请求的中断源。
定时器中断:时基中断(2Hz、4Hz、8Hz、16Hz、32Hz、64Hz、128Hz、256Hz、512Hz、1024H、2048Hz、4096Hz 等多种频率)外部中断:(SPCE061A 有两个外部中断,为负跳沿触发)选择外部中断1,初始化IOB2 为带上拉电阻的输入端口;选择外部中断2,初始化IOB3 为带上拉电阻的输入端口位高阻输入。
《SCI寄存器说明》.(DOC)
>手把手教你写S12XS128程序(26)--SCI寄存器说明1时间:2010-01-22 22:44来源:电子设计吧作者:dzsj8 点击: 243次1、波特率控制寄存器(SCIBDH、SCIBDL)IREN:红外调制模式使能位1 使能0 禁止TNP[0..1]:窄脉冲发射位SBR[0..12]:波特率设置位When IREN = 0 then,SCI baud rate = SCI bus clock / (16 x SBR[12:0])When IREN = 1 then,SCI baud rate = SCI bus clock / (32 x SBR[12:1])【说明】波特率发生器在复位后是禁止的,在设置TE、RE(在SCICR2寄存器中)后才会工作。
当(SBR[12:0] = 0 and IREN = 0) 或者 (SBR[12:1] = 0 andIREN = 1),波特率发生器不工作。
【注意】在未写入SCIBDL,写SCIBDH没有反应。
一般地,设置IREN=0,SR=52(总线频率8MHz),波特率为9600。
2、数据寄存器(SCIDRH、SCIDRL)SCI 内部分别设有发送和接收两个数据寄存器,其低位都通过 SCIDRL 访问,读操作返回接收数据寄存器 RDR 的内容,写操作数据置入发送数据寄存器。
TDR。
当 M=1 即运行在 9 位数据模式时,SCIDRL 和 SCIDRH 形成 9 位的 SCI数据字,这时必须先写入SCIDRH,以便与低位字节(SCIDRL)一起进入发送移位器。
如果 M=0 即 SCI 只用于 7 位或8 位的数据传送,可以只访问 SCIDRL。
当 PE=1 即奇偶校验允许时,奇偶校验位由硬件负责,无需软件干预。
R8:接收到的位 8,该位写操作无效。
当 SCI 设置成 9 位数据运行模式时,该位是从串行数据流中接收到的第 9 位。
T8:发送位 8,任何时候可写。
寄存器配置RCC
寄存器配置RCC这⾥我翻车过,⼀度认为是晶振坏了,可是仔细想想不太对,最终才改过来,现在我就来说说⾃⼰是如何犯错并且发现问题的。
配置流程1.看图图⽚模糊⼀点没事,反正你都得去看中⽂参考⼿册⾼清⽆码⼤图。
具体看图⽅法⽂字倒是不好描述,建议到去搜索视频讲解⼀看,然后脑⼦晕晕的再来看⽂字描述就会懂了。
2.看看参考⼿册上对外设的描述你可能在看各种教程时就已经或多或少的知道了外设的描述(多少取决于视频⽼师讲的和理解的),但是,还是建议看⼀下参考⼿册⾥的描述。
3.认识寄存器见中⽂参考⼿册就这些了,看看理解能⼒不太差的都能懂,啥位置1代表啥的,都写得超级详细的了4.写写代码测试不试⼀下永远不知道代码是错的。
见下⾯我亲⼿撸的代码:void System_clock(void){volatile uint32_t StartUpCount = 0,HSEStatus = 0;//时间向上计数 HSE状态标志RCC->CR |=(0x01<<16);//使能HSE//等待HSE稳定do{HSEStatus=RCC->CR & (0x01<<17);StartUpCount++;}while((HSEStatus==0) && (StartUpCount!=HSE_STARTUP_TIMEOUT));//HSE_STARTUP_TIMEOUT=0x0500if(StartUpCount!=HSE_STARTUP_TIMEOUT){HSEStatus=0x01;}else{HSEStatus=0x00;}//如果启动成功if(HSEStatus==0x01){//使能FLASH预存取缓存区(处理代码等待时间的设置)FLASH->ACR |= (0x01<<4);//配置时延位配置⾼位低位可运⾏,配置低位⾼位会进⼊硬件错误,程序卡死FLASH->ACR &=0x00;FLASH->ACR |=(0x02<<0);RCC->CFGR &=0;//位清零RCC->CFGR |=(0x01<<16);//选择PLL时钟源RCC->CFGR &=~(1<<17);//HSE不分频RCC->CFGR |=(0x07<<18);//PLL锁相环倍频9RCC->CR |=(0x01<<24);//使能PLLwhile((RCC->CR & (0x01<<25))==0);//等待PLL稳定(锁定)RCC->CFGR &=~(0x08<<4);//AHB不分频RCC->CFGR |=(0x04<<8);//APB1分频2RCC->CFGR &=(0x07<<11);//APB2不分频RCC->CFGR |=(0x02<<14);//ADC分频6,只有12MHZ,达不到最⼤14MHZRCC->CFGR |=(0x07<<24);//MCO时钟源PLL分频2,36MHZRCC->CFGR |=(0x02<<0);//选择SYSCLK时钟源while(((RCC->CFGR & (0x08))==0)&&((RCC->CFGR & (0x0c)))==0x0c);//确保PLL作为系统时钟源}else{//启动失败,添加补救代码}}好了,到了这⾥,如何检测代码对错呢?通常有以下⽅法:1.使⽤MCO时钟输出,复⽤PA8引脚。
控制寄存器——精选推荐
SYNCH —Synchronized Status:同步状态。
SYNCH =1,MSCAN08与CAN总线同步;SYNCH =0,MSCAN08与CAN总线不同步。
TLNKEN —Timer Enable:时钟使能。
TLNKEN =1,MSCAN08时钟信号输出连接到片上时钟输入;TLNKEN =0,MSCAN08不连接到时钟输入。
SLPAK —Sleep Mode Acknowledge:睡眠模式确认。
SLPAK标志位指示MSCAN08是否处于睡眠模式,SLPAK =1,表示MSCAN08处于内部睡眠模式;SLPAK =0,不在内部睡眠模式。
SFTRES —Soft Reset:软复位。
SFTRES =1,MSCAN08处于软复位状态;SFTRES =0,MCAN08处于正常运行状态。
当SFTRES被置为1时,MSCAN08立即进入软复位状态。
此时,MSCAN08所有正在进行的收发操作都被中止,且不再与CAN总线保持同步。
只有在软复位状态下,才能对寄存器MCR1、BTR0、BTR1、IDAC、IDAR0-IDAR3、IDMR0-IDMR3进行写操作。
当该位清0时,MSCAN08将在11个隐性位后与总线保持同步。
(2)MSCAN08模式控制寄存器1 (Module Control Register 1,CMCR1)模式控制寄存器1定义了MSCAN08模块的时钟源、唤醒模式及工作方式。
地址:$0501LOOPB —Loop Back Self-Test Mode:回环自测模式位。
LOOPB =1,激活回环自测模式;LOOPB =0,正常运行模式。
当处于回环自测模式时,CAN RX引脚被忽略,CAN TX引脚输出隐性值,MSCAN08将自己发送的报文当成是从远程节点上发送过来的报文进行接收,并产生发送和接收中断。
通过自测模式可以在不接任何外外围器件的基础上,测试MSCAN08工作是否正常。
WUPM —Wakeup Mode:唤醒模式位。
案例8:修改配置寄存器
案例8:修改配置寄存器1. 案例目标通过本案例,你可以掌握如下技能:1)查看与修改配置寄存器2. 设备与拓扑设备:1台Laptop-PT,1台2811路由器。
拓扑:如下图。
3. 操作步骤步骤1:按以上拓扑添加和连接设备。
步骤2:查看配置寄存器。
Router#sh versionCisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M),Version 12.4(15)T1, RELEASE SOFTWARE (fc2)………Configuration register is 0x2102 //这是配置寄存器的缺省配置Router#步骤3:修改配置寄存器1)修改配置寄存器为0x2101,以便从ROM中启动IOSRouter#conf tEnter configuration commands, one per line. End with CNTL/Z. Router(config)#config-register 0x2101 //修改配置寄存器为0x2101 Router(config)#end%SYS-5-CONFIG_I: Configured from console by consoleRouter#sh verCisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)………Configuration register is 0x2102 (will be 0x2101 at next reload)2)重启路由器Router#reloadProceed with reload? [confirm]………Router#sh verCisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)Configuration register is 0x2101 //注意配置寄存器已改为0x2101 Router#Router#sh flash: //此命令可查看flash中的IOS文件System flash directory:File Length Name/status3 509380042 28282 sigdef-category.xml1 227537 sigdef-default.xml[51193823 bytes used, 12822561 available, 64016384 total]63488K bytes of processor board System flash (Read/Write)Router#3)恢复配置寄存器的缺省值Router#conf tEnter configuration commands, one per line. End with CNTL/Z. Router(config)#config-register 0x2102Router(config)#注意:修改配置寄存器通常是临时性的特殊行为,完成特殊操作之后,应将配置寄存器恢复为正常的缺省配置,以便恢复正常启动顺序。
寄存器设置
寄存器设置RCC寄存器分为:CR 时钟控制寄存器CFGR 时钟配置寄存器CIR 时钟中断寄存器APB2RSTR APB2外设复位寄存器APB1RSTR APB1外设复位寄存器AHBENR AHB外设时钟使能寄存器APB2ENR APB2外设时钟使能寄存器APB1ENR APB1外设时钟使能寄存器BDCR 备份域控制寄存器CSR 控制/状态寄存器编程的第一步就是RCC的初始化,请问这些寄存器该怎么设置?谢谢,发帖的目的是学习,也是自我总结,希望各位指正1.时钟控制寄存器RCC_CR复位值为:0000 XX83H ;能以字,半字,字节访问位0 HSI内部高速时钟使能,1打开位1 HSIRDY内部高速时钟可用标志,1可用位3-7 内部高速时钟调整位8-15内部高速时钟校验,这些位在启动时被自动初始化位16 HSEON外部高速时钟使能,1可用位17 HSERDY外部高速时钟可用标志,1可用位18 HSEBYP外部高速时钟旁路位24 PLLON PLL使能,1打开位25 PLLRDY PLL可用标志,1锁定2.时钟配置寄存器CFGR位1-0 SW系统时钟切换00:HIS被选为系统时钟10:HSE被选为系统时钟01:PLL被选为系统时钟位3-2 SWS系统时钟转换状态00:HIS被选为系统时钟10:HSE被选为系统时钟01:PLL被选为系统时钟11:不可用位7-4HPREAHB 预分频器0xxxSYSCLK未被分频1000SYSCLK被2分频1001SYSCLK被4分频1010SYSCLK被8分频1011SYSCLK被16分频1100SYSCLK被64分频1101 1281110 2561111SYSCLK被512分频位10-8 PPRE1APB低速预分频器0xxHCLK未被分频100 2101 4110 8111 16位13-11 PPRE2APB高速预分频器0xxHCLK未被分频100 2101 4110 8111 16位15-14 ADC预分频器00:PLCK2被2分频01:PLCK2被4分频10:PLCK2被6分频11:PLCK2被8分频。
寄存器的配置
/*----------------------------------------------------------------* 作者:张俊伟* 日期:2012年2月15日** 文件名:Timer.c** 文件功能描述:定时器_A 模块资源:一个16 位计数器TAR、三个捕获/比较寄存器CCRx 三个捕获/比较控制寄存器CCTLx.* TACTL 控制寄存器: 1、选择时钟源是否分频* 2、选择计数模式* 3、使能定时器中断(清楚TAR(TACTL |= TACLR;)也可以不写)* 4、定时器溢出TAFLG会置位(一般只设置1、2、3)* CCTLx 捕获/比较控制寄存器:* 1、选择捕获模式* 2、**** 范例说明:* 修改描述:*****----------------------------------------------------------------*//**************************************************************************** * ---------* 定时器A* ---------* TACTL 控制寄存器* -----------------------------------------------------------------/* 15--10 9 8 7 6 5 4 3 2 1 0 /* 未用SSEL1 SSEL0 ID1 ID0 MC1 MC0 未用CLR TAIE TAIFG /* -----------------------------------------------------------------/* SSEL1、SSEL0 //选择定时器输入分频器的时钟源* TACTL |= TASSEL_0; // TACLK 用特定的外部引脚信号* TACTL |= TASSEL_1; // ACLK 辅助时钟* TACTL |= TASSEL_2; // TACLK 子系统时钟* TACTL |= TASSEL_3 ; // TACLK 见器件说明** ID1 ID0 //输入分频选择* TACTL |= ID_0; //不分频* TACTL |= ID_1; //2 分频* TACTL |= ID_0; //4 分频* TACTL |= ID_0; //8 分频** MC1 MC0 //计数模式控制位* TACTL |= MC_0; //停止模式停止计数器* TACTL |= MC_1; //增计数模式* TACTL |= MC_2; //连续计数模式* TACTL |= MC_3; //增/减计数模式** CLR // 定时器清除位* TACTL |= TACLR; //如果不是被清除模式控制暂停,则定时器以增计数模式开始工作。
51汇编语言让寄存器不变
51汇编语言让寄存器不变
要让汇编语言中的寄存器不变,可以使用如下方法:
1. 避免在程序中对寄存器进行修改:在编写程序时,确保不对需要保持不变的寄存器进行修改操作。
可以通过避免使用相关的指令或者使用其他寄存器进行计算和操作来实现。
2. 保存寄存器的值:在需要修改寄存器的代码段(例如调用子程序或者中断处理程序)之前,将需要保留的寄存器的值保存到其他位置,例如堆栈(stack)或者内存中。
然后在代码段执行完之后,将保存的值重新加载到相应的寄存器中。
3. 使用保护机制:一些汇编语言提供了专门的保护机制来确保寄存器的值不被修改。
例如,利用一些指令可以设置寄存器的只读权限,防止其他代码对其进行修改。
需要注意的是,这些方法只能在编写汇编语言程序时控制寄存器的变化,无法完全防止外部因素对寄存器进行修改。
配置寄存器(configuration register)
1. 前言配置寄存器是一个16位的虚拟寄存器,用于指定路由器启动的次序、中断参数和设置控制台波特率等。
该寄存器的值通常是以十六进制来表示的。
利用配置命令config register可以改变配置寄存器的值。
2. 启动次序配置寄存器的最后4位,指定的是,路由器在启动的时候必须使用的启动文件所在的位置:l 0x0000指定路由器进入ROM监控模式l 0x0001指定从ROM中启动l 0x0002-0x000F的值则参照在NVRAM配置文件中命令boot system指定的顺序如果配置文件中没有boot system命令,路由器会试图用系统Flash存储器中的第一个文件来启动,如果失败,路由器就会试图用TFTP从网络上加载一个缺省文件名的文件(由boot域的值确定,如cisco2-4500),如果还失败,系统就从启动Flash中加载启动。
缺省的文件名是采用单词cisco、启动位的值以及路由器类型或处理器的名称构成。
例如某台4500上启动字段设为3,那么缺省的启动文件名就是cisco3-4500。
3. 配置寄存器3.1. 各位的含义表格1 配置寄存器各位的含义例如:通过show version命令可以看到路由器配置寄存器的值,缺省情况下为0x2102。
这四个数字每一个均有着重要的意义。
下面从低到高进行一一的介绍。
第一个2,还原成二进制为0010,这一部分为boot field,对路由器IOS的启动起着至关重要的作用,当boot field 的值为2-15中的任何一个时,路由器属于正常启动,当此值为0时,路由器启动后会进入ROMMON模式,此值为1时,路由器进入到RXBOOT模式(2500路由器的FLASH在配置寄存器的值为2102时属性为只读,如果要升级IOS必须把寄存器的值修改为2101)0,还原成二进制为0000,这四位中,起关键作用的是第三位(即整个寄存器里面的BIT 7),值为0,当路由器启动后会从NVRAM里面的配置文件调到RAM里运行,值为1,路由器启动后会忽略NVRAM的配置(这就是我们在进行PASSWORD RECOVERY时把寄存器的值改为2142的原因)1,还原成二进值为0001,我们来关注BIT8,值为0时,路由器在正常运行模式下CTRL + BREAK无效;值为1,路由器在任何运行模式下只要按下CTRL + BREAK均会立即进入ROMMON模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AXD调试时,初始化ARM处理器的脚本
2011-03-24 21:44
老师给的东西,标记一下,省的丢了。
以前不知道这是干什么用的,现在知道啦,初始化处理器的。
ARM上电以后没有做过任何的初始化。
一般会通过执行一个脚本来对ARM做一个基本的初始化。
脚本一
般就是一个txt文件。
使用方法:AXD==>>options==>>configure interface==>>session File==>>Run configure Script==>>Browser
文件如下:
Setmem 0x53000000 0x00000000 32
Setmem 0x4A000008 0xFFFFFFFF 32
Setmem 0x4A00001C 0x000007FF 32
Setmem 0x53000000 0x00000000 32
Setmem 0x56000050 0x000055AA 32
Setmem 0x4C000014 0x00000007 32
Setmem 0x4C000000 0x00FFFFFF 32
Setmem 0x4C000004 0x00061012 32
Setmem 0x4C000008 0x00040042 32
Setmem 0x48000000 0x22111120 32
Setmem 0x48000004 0x00002F50 32
Setmem 0x48000008 0x00000700 32
Setmem 0x4800000C 0x00000700 32
Setmem 0x48000010 0x00000700 32
Setmem 0x48000014 0x00000700 32
Setmem 0x4800001C 0x00018005 32
Setmem 0x48000020 0x00018005 32
Setmem 0x48000024 0x008E0459 32
Setmem 0x48000028 0x00000032 32
Setmem 0x4800002C 0x00000030 32
Setmem 0x48000030 0x00000030 32
下面是简单的注释说明:
setmem”命令表示设置某个值到某个地址上,而“mem”命令表示从某个地址读一个值并打印出来。
通过这两条命令,可以设置ARM内部的寄存器,也可以读出寄存器的值。
命令地址值长度
Setmem 0x53000000 0x00000000 32 //WTCON 看门狗定时器模式
Setmem 0x4A000008 0xFFFFFFFF 32 //中断屏蔽
Setmem 0x4A00001C 0x000007FF 32 //中断次级屏蔽
Setmem 0x53000000 0x00000000 32 //看门狗定时器控制寄存器
Setmem 0x56000050 0x000055AA 32 //GPFCON配置端口 F 的引脚
Setmem 0x4C000014 0x00000007 32 //时钟分频控制
Setmem 0x4C000000 0x00FFFFFF 32 //PLL 锁定时间计数寄存器
Setmem 0x4C000004 0x00061012 32 //MPLL 配置寄存器
Setmem 0x4C000008 0x00040042 32 //UPLL 配置寄存器
Setmem 0x48000000 0x22111120 32 //总线宽度和等待状态控制
Setmem 0x48000004 0x00002F50 32 //启动 ROM 控制
Setmem 0x4800000C 0x00000700 32 //BANK2 控制
Setmem 0x48000010 0x00000700 32 //BANK3 控制
Setmem 0x48000014 0x00000700 32 //BANK4 控制
Setmem 0x48000018 0x0007FFFC 32 //BANK5 控制
Setmem 0x4800001C 0x00018005 32 //BANK6 控制
Setmem 0x48000020 0x00018005 32 //BANK7 控制
Setmem 0x48000024 0x008E0459 32 //DRAM/SDRAM 刷新控制
Setmem 0x48000028 0x00000032 32 //可变 Bank 大小
Setmem 0x4800002C 0x00000030 32 //SDRAM BANK6 的模式寄存器设置Setmem 0x48000030 0x00000030 32 //SDRAM BANK7 的模式寄存器设置。