文档库 最新最全的文档下载
当前位置:文档库 › V3.5版本STM32F10XX通用定时器应用指南

V3.5版本STM32F10XX通用定时器应用指南

V3.5版本STM32F10XX通用定时器应用指南
V3.5版本STM32F10XX通用定时器应用指南

STM32F10XX通用定时器应用指南

湖北文理学院阮海蓉

在STM32微处理器中,定时器是使用频率最高、用途最广、变化组合最灵活的部件,初学者往往不得要领。本文提纲携领,帮助初学者入门。介绍中以通用定时器为基本对象,高级定时器和基本定时器是在通用定时器的基础上增减了几种功能,在弄懂通用定时器以后就不难理解了。

固件库升级到STM32F10x_StdPeriph_Lib_V3.5.0后,定时器部分与使用手册UM0427有了较大改变,本文做了修订。

通用定时器(TIM2~5)

图1:通用定时器框图

图2:主从定时器实例

1.每个通用定时器(TIM2~5)的主要组成部件:①一个16位的预分频器(图1中的PSC),对输入的

号(图1及图2中的TRGO)到另一个定时器(也可以是其他部件),供其作为时钟源或触发源使用;

④一个从模式控制器(在图1和图2中),用于选择时钟源和触发源;⑤四个捕获/比较控制器(图1

中),用于纪录某一输入事件发生时的计数器当前值或用于在计数器到达某一预定数值时使输出发生变化。

2.预分频器PSC在被使用时其值会自动加上1,即其值为0时不分频,为1时2分频……。

3.时钟源:①内部时钟(来自APB1),SMS[2:0]=000,ECE=0;②外部引脚ETR(外部时钟模式2,滤

波分频后的指定边沿),ECE=1;③由从模式控制器提供的3种可±1的编码器模式(共3种);④由从模式控制器提供的TRGI源(即外部时钟模式1)。

4.使用内部时钟且分频系数不为1时,定时器时钟=(ABP1频率/ABP分频系数)×2。

5.TRGI源:①外部触发ETR(外部时钟模式1,滤波分频后的指定边沿);②TRC源(见图1);③TI1FP1

(来自于输入TI1经滤波和边沿检测)④TI2FP2(来自于输入TI2经滤波和边沿检测)。

6.TRC源:①来自另一定时器主模式控制器的输出ITR0~ITR3(各定时器定义不同);②来自外部输入

TI1(本定时器的CH1或者CH1、CH2和CH3的异或)的跳变边沿(上升沿+下降沿)TI1F_ED。

7.计数器影子寄存器:放置计数器向上计数时溢出值、向下计数时重装值的寄存器。

8.更新:重置预分频寄存器和计数器的影子寄存器。

9.复位:重置预分频寄存器和计数器影子寄存器,清除现存分频值,计数器从0或溢出值开始计数。复

位会产生更新事件,更新事件并不会产生复位。

10.触发:计数器启动、停止、初始化。

11.更新事件可由计数器上溢/下溢、设置UG位和从模式控制器发出的复位产生,可以被UDIS=0关闭。

12.计数器可设定为发生更新时不停止和停止(单脉冲模式)。

13.写入自动重装载寄存器TIMx_ARR,可以选择立即更新到计数器影子寄存器(ARPE=0)或暂不更新

(ARPE=1)。

14.写入预分频寄存器TIMx_PSC后,要在发生更新后才能装载到影子寄存器中。

15.设置UDIS=1可以禁止更新事件,但是设置UG位以及从模式控制器发出的复位可以使计数器和预分

频器被重新初始化。

16.主模式控制器的输出可作为另一定时器的输入,主模式控制器可使用以下事件中的一个作为输出:①

本定时器复位(设置UG或由TRGI引起);②本定时器使能(CEN=1或从模式控制器的触发);③本定时器更新;④捕获/比较通道1上一次成功的输入捕获/输出匹配(CC1IF);⑤指定通道1~通道4中的一个,其输出有效(OC1REF~OC4REF)。

17.从模式控制器可以将输入作为本定时器的时钟源或控制源,控制方式有:①关闭从模式,即TRGI无

效;②编码器模式1,根据TI1FP1的电平,计数器在TI2FP2的边沿向上/向下计数;③编码器模式2,根据TI2FP2的电平,计数器在TI1FP1的边沿向上/向下计数;④编码器模式3,根据另一信号的电平,计数器在TI1FP1和TI2FP2的边沿向上/向下计数;⑤复位,在TRGI的上升沿重新初始化计数器并产生更新信号;⑥门控,TRGI高电平时计数,TRGI低电平时停止计数;⑦触发,TRGI高电平时开始计数(若已在计数中则无影响);⑧外部时钟模式1:以TRGI作为计数脉冲,在TRGI的上升沿计数。

18.以上从模式控制器的8种状态,①为无效,②③④⑧为提供时钟源,⑤⑥⑦为提供控制源。

19.输入捕获的触发源:①本通道的输入(TIx映射到通道x);②相邻通道的输入(通道1、2为一组通

道3、4为另一组);③TRC源。

20.使用TRC作为触发源时,时钟源只能是内部时钟或外部时钟模式2的ETRF。

21.输入捕获工作方式:触发源有效时,将计数器CNT的值复制到本通道的捕获/比较寄存器,并产生

CCxIF标志请求中断和DMA。

22.在输入捕获模式下将同一个输入以相反的有效沿作用到两个相邻通道(限通道1和通道2),并对计数

器复位,可实现PWM输入模式,这种模式用于测量输入波形的占空比。

23.ETR、TI1~TI4均配有边沿检测器和数字滤波器,边沿检测器可以设置为上升沿/下降沿,数字滤波器

可以频率f CK_INT或f DTS/n连续采样N次后判定其状态,f DTS可设为时钟f CK_INT或f CK_INT/2、f CK_INT/4。

25.TRGI上的事件对本定时器的作用可以选择被延迟,以使本定时器与主模式控制器驱动的从定时器完

美同步。

26.输出比较工作方式:在该通道的捕获/比较寄存器中预存一个值,当计数器CNT的数值与捕获/比较寄

存器的值相符时,设置或改变匹配输出OCxREF的状态,并产生CCxIF标志请求中断和DMA。27.输出比较的工作模式:①冻结,不起作用;②匹配时输出有效(高)电平;③匹配时输出无效(低)

电平;④匹配时翻转输出电平;⑤强制输出无效(低)电平;⑥强制输出有效(高)电平;⑦PWM 模式1,计数器<寄存器时输出有效(高)电平,反之输出无效(低)电平;⑧PWM模式2,计数器<寄存器时输出无效(低)电平,反之输出有效(高)电平。

28.以上8种输出比较的工作模式中,用于匹配有效的有②③④⑦⑧,用于独立操控的有⑤⑥。

29.输出比较的匹配输出可设置为受ETRF控制:①输出与ETRF无关;②输出被ETRF高电平清0。

30.使用OCxPE可以设置在写入4个通道寄存器时:①禁止预装载,即写入值立即启用生效(OcxPE=0);

②开启预装载,即写入值在下一次更新事件到来时启用(OcxPE=1)。

31.输出信号可被同极性或反极性传送至指定引脚CH1~CH4。

32.输出比较在中央对齐模式下,通道的中断标志可选择:①仅向上计数时被设置;②仅向下计数时被设

置;③向上和向下计数时均设置。

33.定时器的中断和DMA可由以下事件引起:①计数器被触发;②计数器上溢/下溢、设置UG位和从模

式控制器产生的更新,其中后2种可以被关闭;③通道1~通道4发生捕获/匹配。

34.定时器共有6个事件:触发TRGI有效、更新和4个捕获/比较通道匹配。事件可作为DMA和中断的

源。事件可设置事件产生寄存器TIMx_EGR中各标志的方法模拟产生。

高级定时器(TIM1~8)

2.TIM8使用内部时钟且分频系数不为1时,定时器时钟=(ABP2频率/ABP分频系数),不再×2。

3.高级定时器有重复次数计数器。启用重复次数计数器后,只有当溢出达到预定的重复次数后才会发生

更新。但软件以及从模式控制器产生的更新事件仍会立即更新。

4.重复次数计数器RCR的值在被使用时会自动加1。其值为0时重复1次,为1时重复2次。

5.输出增加CH1N、CH2N、CH3N作为CH1、CH2、CH3的互补输出。

https://www.wendangku.net/doc/ad6186992.html,xE=CCxNE=1时启用互补输出,此时OCx和OCxN的极性由CCxP和CCxNP决定。当CCxP和

CCxNP相同时,OCx和OCxN的有效电平是相反的,以保证推挽功率管不会同时导通。

7.若启用了互补输出,则UTG对应设定一个死区时间。OCx和OCxN将延迟至死区时间后有效,以避

开推挽功率管的关断时间,确保2个推挽功率管关断在前,开通在后,不至发生短路环流。

https://www.wendangku.net/doc/ad6186992.html,:控制更新事件,若CCPC=1,则COM事件启动CCxE、CCNxE、OCxM更新。CCUS=0由写

入COMG产生,CCUS=1时由写入COMG位或TRGI产生。COM事件可以用来产生六步PWM输出。

9.运行模式(MOE=1)。OSSR=1:若CcxE=CcxNE=1,OCx和OCxN对应输出PWM波形;若CcxE、

CcxNE中一个为1,CcxE、CcxNE中为1的OCx和OCxN输出PWM波形,为0的OCx=CCxP、OCxN=CCxNP;CcxE=CcxNE=0:则使OCx=CCxP、OCxN=CCxNP,同时OCx和OCxN与定时器断开。OSSR=0:若CcxE=CcxNE=1,OCx和OCxN对应输出PWM波形;若CCxE、CCxNE中一个为1,OCx和OCxN中CcxE、CcxNE为1的输出PWM波形,为0的OCx=0、OCxN=0,同时OCx和OCxN与定时器断开;CcxE=CcxNE=0:则OCx=0、OCxN=0,同时OCx和OCxN与定时器断开。10.由运行模式(MOE=1)变为空闲模式(MOE=0)。OSSI=1:输出OCx=CCxP、OCxN=CCxNP,经过

一个死区时间后,OCx=OISx,OCxN=OISxN。OSSI=0:输出OCx=CCxP、OCxN=CCxNP,经过一个死区时间后,OCx=OISx,OCxN=OISxN,同时OCx和OCxN与定时器断开。

基本定时器(TIM6~7)

1.基本定时器只能使用内部时钟,只有更新事件。

2.基本定时器只有向上计数方式。

3.主模式控制器的输出可作为另一定时器的输入,主模式控制器可使用以下事件中的一个作为输出:①

TIM库函数

1 函数TIM_DeInit

例:

/* Resets the TIM2 */

TIM_DeInit(TIM2);

2 函数TIM_TimeBaseInit

TIM_TimeBaseInitTypeDef structure

TIM_TimeBaseInitTypeDef 定义于文件“stm32f10x_TIM.h”:typedef struct

{

u16 TIM_Period;

u16 TIM_Prescaler;

u8 TIM_ClockDivision;

u16 TIM_CounterMode;

} TIM_TIMBaseInitTypeDef;

TIM_Period

TIM_Period 设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000 和0xFFFF 之间。

TIM_Prescaler

TIM_Prescaler 设置了用来作为T IM 时钟频率除数的预分频值。它的取值必须在0x0000 和0xFFFF 之间。

TIM_ClockDivision

TIM_CounterMode

TIM_RepetitionCounter

TIM_RepetitionCounter设置了周期计数器值。RCR向下计数器每次计数至0,会产生一个更新事件且计数器重新由RCR值(N)开始计数。

这意味着在PWM模式(N+1)对应着:

. 边沿对齐模式下PWM周期数

. 中央对齐模式下PWM半周期数

它的取值必须在0x00和0xFF之间。

3 函数TIM_OC1Init

TIM_OCInitTypeDef structure

TIM_OCInitT ypeDef 定义于文件“stm32f10x_TIM.h”:

typedef struct

{

u16 TIM_OCMode;

u16 TIM_OutputState;

u16 TIM_OutputNState;

u16 TIM_Pulse;

u16 TIM_OCPolarity;

u16 TIM_OCNPolarity;

u16 TIM_OCIdleState;

u16 TIM_OCNIdleState;

} TIM_OCInitTypeDef;

TIM_OCMode

TIM_OutputState

TIM_OutputNState

TIM_Pulse

TIM_Pulse 设置了待装入捕获比较寄存器的脉冲值。它的取值必须在0x0000 和0xFFFF 之间。TIM_OCPolarity

TIM_OCNPolarity

TIM_OCIdleState

TIM_OCNIdleState

例:

/* Configures the TIM Channel1 in PWM Mode */

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

TIM_OC1Init(TIM1,&TIM_OCInitStructure);

4 函数TIM_OC2Init

例:

/* Configures the TIM Channel2 in PWM Mode */

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

TIM_OC2Init(TIM1,&TIM_OCInitStructure);

5 函数TIM_OC3Init

例:

/* Configures the TIM Channel3 in PWM Mode */

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

6 函数TIM_OC4Init

例:

/* Configures the TIM Channel4 in PWM Mode */

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OC4Init(TIM1,&TIM_OCInitStructure);

7 函数TIM_ICInit

函数T IM_ICInit

TIM_ICInitTypeDef structure

TIM_ICInitT ypeDef 定义于文件“stm32f10x_TIM.h”:

typedef struct

{

u16 TIM_Channel;

u16 TIM_ICPolarity;

u16 TIM_ICSelection;

u16 TIM_ICPrescaler;

u16 TIM_ICFilter;

} TIM_ICInitTypeDef;

TIM_Channel

TIM_ICPolarity

TIM_ICPolarity输入活动沿。该参数取值见下表。

TIM_ICSelection

TIM_ICPrescaler

TIM_ICFilter

TIM_ICFilter选择输入比较滤波器。该参数取值在0x0和0xF之间。

例:

/* TIM Input Capture Channel 1 mode Configuration */

TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV2;

TIM_ICInitStructure.TIM_ICFilter = 0x0;

TIM_ICInit(&TIM_ICInitStructure);

8 函数TIM_PWMIConfig

例:

/* TIM PWM Input Channel 1 mode Configuration */

TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

TIM_ICInitStructure.TIM_ICFilter = 0x0;

TIM_PWMIConfig(TIM1,&TIM_ICInitStructure);

9 函数TIM_BDTRConfig

函数T IM_BDTRConfig

TIM_BDTRInitStruct structure

TIM_BDTRInitStruct structure 定义于文件“stm32f10x_TIM.h”:

typedef struct

{

u16 TIM_OSSRState;

u16 TIM_OSSIState;

u16 TIM_LOCKLevel;

u16 TIM_DeadTIM;

u16 TIM_Break;

u16 TIM_BreakPolarity;

u16 TIM_AutomaticOutput;

} TIM_BDTRInitTypeDef;

TIM_OSSRState

TIM_OSSIState

TIM_LOCKLevel

TIM_DeadTIM

TIM_DeadTIM 指定了输出打开和关闭状态之间的延时(UTG=0x0~0xf)。TIM_Break

TIM_BreakPolarity

TIM_AutomaticOutput

例:

/* OSSR, OSSI, Automatic Output enable, Break, dead TIM and Lock Level configuration*/

TIM_BDTR

InitTypeDef TIM_BDTRInitStructure;

TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;

TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;

TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;

TIM_BDTRInitStructure.TIM_DeadTIM = 0x05;

TIM_BDTRInitStructure.TIM_Break = TIM_Break_Enable;

TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;

TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;

TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);

10 函数TIM_TimeBaseStructInit

例:

/* The following example illustrates how to initialize a TIM_BaseInitTypeDef structure */

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

TIM_TimeBaseStructInit(& TIM_TimeBaseInitStructure); 11 函数TIM_OCStructInit

函数T IM_TimeBaseStructInit

例:

/* The following example illustrates how to initialize a TIM_OCInitTypeDef structure */

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCStructInit(& TIM_OCInitStructure);

12 函数TIM_ICStructInit

函数T IM_ICStructInit

例:

/* The following example illustrates how to initialize aTIM_ICInitTypeDef structure */

TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICStructInit(& TIM_ICInitStructure);

13 函数TIM_BDTRStructInit

函数T IM_BDTRStructInit

定时器、计数器操作与应用实验报告

实验三 定时器、计数器操作与应用实验报告 、实验目的 1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法; 2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ; 3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。 二、实验要求 仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。 三、实验设备 2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆 注 意: 1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。 四、实验内容 1 、梯形图 1 、 FX 系列可 编程 序控 制器 一只 一套 5、 GX Developer Version 7.0 软件 一套

2、梯形图程序 0LD xooo 1OUT YOOO X001 2LD 3OR¥001 4AN I X002 5OUT Y001 6OUT TO K50 9MPS 10AHI TO 11OUT Y002 12MPP 13ASD TO 14OUT¥003 15LD X003 16RST CO 18LD X004 19OUT CO K5 22LD CO 23OUT Y004 24END 3、时序图

r 时序10 □ ?Si 正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C 40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1?-14D ,1如■!? 如也 40 如厂「 五、实验步骤 1、程序的编辑、检查和修改; 2、程序的变换; 3、程序的离线虚拟设备仿真测试; 4、程序写入PLC; 5、用PLC运行程序; 6、比较程序的分析结果与实际运行结果。 六、实验报告 1、实验梯形图程序的编写; 2、梯形图程序的理论分析与结果; 3、梯形图程序的实际运行结果; 4、结论。 七、实验心得 通过这样一次实验,我对GX Developer Version 7.0 软件的使用方 法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■XDU "Tlr-.Ll-t-1!- D LJ D-IT--1 z?E I4J 一 — Ti ll IL — 」 ill-t-ll-r — 1

05_STM32F4通用定时器详细讲解精编版

STM32F4系列共有14个定时器,功能很强大。14个定时器分别为: 2个高级定时器:Timer1和Timer8 10个通用定时器:Timer2~timer5 和 timer9~timer14 2个基本定时器: timer6和timer7 本篇欲以通用定时器timer3为例,详细介绍定时器的各个方面,并对其PWM 功能做彻底的探讨。 Timer3是一个16位的定时器,有四个独立通道,分别对应着PA6 PA7 PB0 PB1 主要功能是:1输入捕获——测量脉冲长度。 2 输出波形——PWM 输出和单脉冲输出。 Timer3有4个时钟源: 1:内部时钟(CK_INT ),来自RCC 的TIMxCLK 2:外部时钟模式1:外部输入TI1FP1与TI2FP2 3:外部时钟模式2:外部触发输入TIMx_ETR ,仅适用于TIM2、TIM3、TIM4,TIM3,对应 着PD2引脚 4:内部触发输入:一个定时器触发另一个定时器。 时钟源可以通过TIMx_SMCR 相关位进行设置。这里我们使用内部时钟。 定时器挂在高速外设时钟APB1或低速外设时钟APB2上,时钟不超过内部高速时钟HCLK ,故当APBx_Prescaler 不为1时,定时器时钟为其2倍,当为1时,为了不超过HCLK ,定时器时钟等于HCLK 。 例如:我们一般配置系统时钟SYSCLK 为168MHz ,内部高速时钟 AHB=168Mhz ,APB1欲分频为4,(因为APB1最高时钟为42Mhz ),那么挂在APB1总线上的timer3时钟为84Mhz 。 《STM32F4xx 中文参考手册》的424~443页列出与通用定时器相关的寄存器一共20个, 以下列出与Timer3相关的寄存器及重要寄存器的简单介绍。 1 TIM3 控制寄存器 1 (TIM3_CR1) SYSCLK(最高 AHB_Prescaler APBx_Prescaler

第5章习题解答

第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。 答:方式1定时,131.072ms。 5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。 答:FCH,18H。 二、单选 1.定时器T0工作在方式3时,定时器T1有种工作方式。 A.1种 B.2种 C.3种D.4种 答:C 2. 定时器T0、T1工作于方式1时,其计数器为位。 A.8位 B.16位 C.14位 D.13位 答:B 3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。

A. 仅取决于TR x状态 B. 仅取决于GATE位状态 C. 是由TR x和INT x两个条件来共同控制 D. 仅取决于INT x的状态 答:C 4. 定时器T2工作在自动重装载方式时,其计数器为位。 A.8位 B. 13位 C.14位 D. 16位 答:D 5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SCON与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。 2.TH x与TL x(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 答:晶振的频率为24MHz, 机器周期为0.5μs。

Tica天加空调控制器使用说明

Tica天加空调控制器使用说明 一). 控制面板操作指导 1、功能键 2、加键 3、减键 4、风速键 5、模式键 6、开/关键 7、LED开/关机状态指示 8、LCD显示屏 9、红外接收窗口 10、T2 11、子菜单M1 12、T1 13、子菜单M2 a. 开/关 选择系统的开或关。 a. 开机状态LED显示绿色 b. 关机状态I )有定时LED显示绿色并闪烁 II )无定时LED显示红色 a. 模式 通过模式键,可选择操作模式,如下: I)冷暖型号:制冷-通风-除湿-制热-自动 II)单冷型号:制冷-通风-冷除湿模式 b. 风速 风速选择:风速无变化 c. 温度 温度的选择可从16℃到30℃或者60F到85F。同时按下“▲”和“▼”键5秒可以转换摄氏温度和华氏温度模式。当按下任一键其最新设定温度将闪烁4次。若没再次按键,系统将恢复到显示室内温度状态。温度显示范围0℃到50℃或32F到99F。 a. 日期/时间设定 按下“功能”键,可选择日期/时间设定子菜单。子菜单标M1将连续闪烁6秒。 1) 按下“模式”键将改变日期设定,可从周日到周六。 2)按下“▲”或“▼”键可调节时间,同时T1将连续闪烁,表示进入定时时钟设置,但必须按住“▲”和“▼”键持续5秒方可更改时钟参数。

按住“▲”或“▼”按钮可减少或增加实时时钟设定时间。持续按住以上按钮可自动改变其设置。按住按钮期间,其改变将以3种速度进行。 a. 定时器 定时器可通过遥控或主机板按键激活。遥控接收定时设置:实时定时器(通过LCD手机)。 实时开机时间设定与内部实时时钟匹配,开机启动。同样的,实时关机设定与内部实时时钟匹配时,关机启动。此设定将持续保留为下一次的自动开/关机用途。 a. 定时 按下“功能”键,可选择相应子菜单(M1)。相应子菜单(M1)将连续闪烁6秒。 1) 按下“模式”键将改变日期设定,从周一到周日 2) 按下“开/关”键持续3秒,可选择开机或关机定时设定。 此功能用于选择定时开/关机。若有关定时开/关被选中,相应的开/关定时符号闪烁,同时相应的定时设定日期也将闪烁。若有关定时开/关未被设置过,显示屏将显示--:--,否则将显示最后设定时间。定时器按键“▲”/“▼”用来输入开/关时间。如果长按“▲”或“▼”键,计时器的设定时间也将相应、快速的增加/减少。若定时器未被设置过它将从“00 00”开始,否则它将从以前的设定时间开始。按“风速”键可取消当前的定时开/关机设定,它将显示--:--。按下“模式”键用来改变设置开/关星期设置。若没任何键按启动,6秒后退出定时设定。若相应的定时被设置,开/关机符号将显示。只要有任何一天有定时设定,T1将显示。只要有任何一天的定时开机被设定,开机符号闪烁。只要有任何一天的定时关机被设定,关机符号闪烁。连续同时按“功能”键和“风速”键5秒,则可取消全部定时设定。 a. 节能睡眠模式 按下“功能”键,可选择M2子菜单。M2子菜单将连续闪烁6秒。 按下“模式”键可选择睡眠功能。选择睡眠状态将视睡眠模式的状态而进入/退出睡眠设定。如在送风或除湿模式,此键被屏闭。 l) 电池 如果系统掉电,电池将自动维持系统的实时时钟运行

寄存器简单理解

GPIOB_BASE是一个地址,这个地址是GPIOB一系列寄存器的首地址,后面地址依次是GPIOB 的寄存器,将这个地址转换为结构体形式,并将后面寄存器按顺序定义在结构体里面,这样访问寄存器就可以通过引用结构体的形式了而不必书写寄存器的地址来访问寄存器。 寄存器用途: 1.可将寄存器内的数据执行算术及逻辑运算; 2.存于寄存器内的地址可用来指向内存的某个位置,即寻址; 3.可以用来读写数据到电脑的周边设备。 AX 累加器,得名原因是最初常使用ADD AX,n这样的指令 CX 计数器,得名原因是最常使用CX的值作为重复操作的次数 BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的数取到AX中去 DX 通用寄存器 所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种: 1.EAX、EBX、ECX、EDX等通用寄存器——从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的; 2.CS、SS、ES等段寄存器——它所存储的只能是地址,它的作用是从寻址上可以体现出来; 3.EIP,也称为指令指针 4.EFLAGS寄存器,俗称为标志寄存器——所存储的是与CPU的每一个执行的指令有关。是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来; 5.浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算 6.MMX指令使用的8个64位寄存器 7.单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器

第五章定时器/计数器

第五章MCS-51定时器/计数器及其应用 5.1定时方法概述 在单片机的应用中,可供选择的定时方法主要有: 1.软件定时 软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间较精确,且不需外加硬件电路。但软件定时要占用CPU的时间,增加CPU开销,因此软件定时的时间不宜太长。 当单片机时钟确定后,每条指令的指令周期是确定的,在指令表中用振荡周期表示出来了。因此,根据程序执行所用的总的振荡周期数和振荡频率,可以较准确的计算,程序执行完所用的时间。软件延时是实际经常采用的一种短时间定时方法。 例4-16 ORG 1000H TIME:MOV R1, #0FAH ;12个振荡周期 L1 :MOV R0, #0FFH ;12个振荡周期 W1 :DJNZ R0 , W1 ;24个振荡周期 DJNZ R1 , L1 ;24个振荡周期 NOP ;12个振荡周期 NOP ;12个振荡周期 RET ;24个振荡周期 计算延时时间: N=12+(12+24×255+24)×250+12+12+24 =1539060个振荡周期 如果?=6MHz T?=1/?=1/6μs Tt=N×T?=1539060×1/6μS=256510μS=0.25651S 调整R 0和R 1 中的参数,可改变延时时间,如果需要加长延时间,可以增加循环嵌入。 当延时时间较长、不便多占用CPU时间的情况下,一般采用定时器方法。

2.内部可编程定时器 这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,因此可编程定时器都兼有计数功能,可以对外来脉冲进行计数。 3.外部扩展专用定时器 对于时间较长的定时,常使用外部扩展专用定时器完成。这种方法定时全部由硬件电路完成,不占用CPU时间。例如:DALLAS 公司的DS1302低功耗时钟芯片.它可以对年月日时分秒计时,并且有闰年补偿功能,它可以很方便地和单片机接口. 5.2 51单片机内部的定时器/计数器 作为基本组成内容,8051单片机共有两个可编程的定时器/计数器,分别称定时 器/计数器0和定时器/计数器1。它们都是十六位加法计数结构,分别由TH 0和TL 及TH 1和TL 1 两个8位计数器组成,它们具有计数和定时两种工作方式以及四种工作模 式。两个特殊功能寄存器(定时器控制寄存器TCON和定时器方式寄存器TMOD)用于确定定时器/计数器的功能和操作方式。图5-1给出了定时器/计数器的结构框图, 它反映了单片机中微处理器、寄存器TCON和TMOD与定时器T 0、T 1 之间的关系。计数 器的输入脉冲源可以是外部脉冲源或系统时钟振荡器,计数器对这两个输入脉冲之一进行递增计数。 顾名思义,MCS-51的每个定时器/计数器都具有定时和计数两种功能。

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数, 每计满100个脉冲,则取反P1.0口线状态。 汇编程序: START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }

ARM寄存器详解

ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六 个。 R0~R7:是通用寄存器并可以用做任何目的。 R8~R12:是通用寄存器,但是在切换到FIQ模式的时候,使用它们的影子(shadow)寄存器。 R13:被称为栈指针寄存器,常用来保存栈指针。 R14:链接寄存器,常用来保存函数返回地址 R15:是程序指针PC CPSR:(Current Program Status Register)当前程序状态寄存器,CPSR 寄存期保存当前程序运行的状态。 0 0 0 0 0 User26 模式 0 0 0 0 1 FIQ26 模式 0 0 0 1 0 IRQ26 模式 0 0 0 1 1 SVC26 模式 1 0 0 0 0 User 模式 1 0 0 0 1 FIQ 模式 1 0 0 1 0 IRQ 模式 1 0 0 1 1 SVC 模式 1 0 1 1 1 ABT 模式 1 1 0 1 1 UND 模式

ARM寻址方式 1.立即数寻址 ARM 指令的立即数寻址是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数。ADD R0,R0,#1 ;R0←R0 + 1 ADD R0,R0,#0x3A ;R0←R0 + 0x3A 在以上 2 条指令中,第2个源操作数即为立即数,实际使用时以“#”符

号为前缀。 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采 用的一种方式,也是一种执行效率较高的寻址方式。如以下的指令。 ADD R0,R1,R2 ;R0←R1 + R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 3.寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器 中。例如以下指令。 ADD R0,R1,[R2] ;R0←R1 + [R2] LDR R0,[R1] ;R0←[R1] 在第1 条指令中,以寄存器R2 的内容作为操作数的地址,然后与R1相加,其结果存入 寄存器R0中。 第2条指令将以 R1 的值为地址的存储器中的内容送到寄存器R0中。 4.基址变址寻址 基址变址的寻址方式就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给 出的地址偏移量相加,从而得到一个操作数的有效地址。如下面的几条指令所示。 LDR R0,[R1,#0x0A] ;R0←[R1 + 0x0A] LDR R0,[R1,#0x0A]!;R0←[R1 + 0x0A]、R1←R1 + 0x0A 在第1条指令中,将寄存器R1 的内容加上0x3A 形成操作数的有效地址,将该地址处的 操作数送到寄存器R0中。 在第2条指令中,将寄存器R1的内容加上0x0A形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增0x0A个字节。 5.多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用 一条指令完成传送最多 16 个通用寄存器的值。比如下面的指令。LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0 + 4]

通用定时器总结

STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM 互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 通用定时器的定义:STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。 功用:STM32的通用定时器可以被用于测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。 分频系数:决定定时器的时基,即最小定时时间。 定时器的时钟来源: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。 举一个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值; 当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用); 当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。 由于APB1不仅给通用定时器提供时钟,还给其他外设提供时钟,因此也体现了APB1 Prescaler设计的灵活性。 对自动重装载寄存器赋值,TIM_Period的大小实际上表示的是需要经过TIM_Period次计数后才会发生一次更新或中断。对TIM_Prescaler的设置,直接决定定时器的时钟频率。通俗点说,就是一秒钟能计数多少次。比如算出来的时钟频率是2000,也就是一秒钟会计数2000次,而此时如果TIM_Period设置为4000,即4000次计数后就会中断一次。由于时钟频率是一秒钟计数2000次,因此只要2秒钟,就会中断一次。发生中断时间=(TIM_Prescaler+1)* (TIM_Period+1)/FLK。 同样需要注意的,一进入中断服务程序,第一步要做的,就是清除掉中断标志位。以便

PW-9242V 节目定时器操作指南

PW-9242V 节目定时器操作指南 一、性能: 1、节目记忆和记忆时间间隔 可以输入及储存数据来控制本机的内置电子乐曲或声音的定时播放及输出通道,并可定时控制外围设备的电源开关。每组记忆的间隔为1 分钟。 2、内置多种电子乐曲供选择 本机内置11 种电子乐曲,播放时间为3 至45 秒。 第一种:17 秒;第二种:24 秒;第三种:45 秒;第四种:44 秒; 第五种:25 秒;第六种:17 秒;第七种:14 秒;第八种:13 秒; 第九种:2 秒;第十种:2 秒;第十一种:16 秒; 3、录音重播(要VF-9104‘声音储存器’配合) 如果配置了VF-9104,就可以播放最多15 段已录声音。 4、自检本机的自检功能可以检测到储存部分的出错。 5、数据保存电源关掉时,采用可充电池供电来保存数据(可保存7 天)。 6、保护功能如果不想无意中改变数据,可以使用数据锁定功能 7、输出通道选择 8、自动返回时间显示功能。当超过1 分钟没有按任何操作键时,显示器会自动返回时间显示状态 二、操作方法: 1、星期设定 * 重复按“DAY DOWN”或“DAY UP”键直至显示灯在当日的星期位置,如需快速调节,请连续按住“DAY DOWN”或“DAY UP”键。 * 按“MEMORY/PLAY”键。* 按住“CLEAR/EXIT”键约2 秒退出星期设置。 2、时间设定 * 重复按“TIME DOWN”或“TIME UP”键直至显示屏显示工正确时间,如需快速调节,请连续按住“TIME DOWN”或“TIME UP”键。* 按“MEMORY/PLAY”键。* 按住“CLEAR/EXIT”键约2 秒退出时间设置。 3、内置乐曲播放 * 当“MEL”LED 指示灯亮起时,选择11 段电子乐曲中的1 首。按一下 “CHANNEL/WEEK”键来设定输出通道。然后按住“MEMORY/PLAY”键2 秒以上。内置电子乐曲就会开始播放。§举例:在3、4 通道播放第6 首乐曲,按以下步骤设置 (1)、按“MELODY/VOICE”键,使“MEL”LED 指示灯亮起。 (2)、同时按下“2/CH2”和“4/CH3”键(2+4=6)来选择乐曲编号。 (3)、按“CHANNEL/WEEK”键,再按“3/CH3”和“8/CH4”来选择输出通道。 (4)、按住“MEMORY/PLAY”键2 秒以上进行播放 (5)、如果要退出此设置,按住“CLEAR/EXIT”键约2 秒。 4、录音重播(需VF-9104 配套使用) * 当“VOICE”LED 指示灯亮起时,选择15 段储存在VF-9104 里的已录声音中的一段,按一下“CHANNEL/WEEK”键来设定输出通道。然后按住“MEMORY/PLAY”键2 秒以上。已选录音就会开始播放。 §举例:在1、3 通道播放第七段录音,按以下步骤设置 (1)、按“MELODY/VOICE”键,使“VOICE”LED 指示灯亮起。 (2)、同时按下“1/CH1”、“2/CH2”和“4/CH3”键(1+2+4=7)来选择录音编号。 (3)、按“CHANNEL/WEEK”键,再按“1/CH1”和“4/CH3”来选择输出通道。 (4)、按住“MEMORY/PLAY”键2 秒以上进行播放 (5)、如果要退出此设置,按住“CLEAR/EXIT”键约2 秒。 5、内置电子乐曲定时播放的设置 * 首先调节预定日期和时间,设定乐曲编号和输出通道,然后再按一下“MEMORY/PLAY”键,您就会完成一个乐曲定时播出的设置。 §举例:于星期一(MON)下午(PM)2:20 分在第1、3 通道播放第9 段乐曲,按以下步骤设置: (1)、按“DAY UP”或“DAY DOWN”键直至“MON”LED 指示灯亮起。

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图

四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H 开始 系统初始化

START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1为工作方式1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END

实验二 通用寄存器实验

实验二通用寄存器实验 一、实验目的 1.熟悉通用寄存器的数据通路。 2.了解通用寄存器的构成和运用。 二、实验要求 掌握通用寄存器R3~R0的读写操作。 三、实验原理 实验中所用的通用寄存器数据通路如下图所示。由四片8位字长的74LS574组成R1 R0(CX)、R3 R2(DX)通用寄存器组。图中X2 X1 X0定义输出选通使能,SI、XP控制位为源选通控制。RWR为寄存器数据写入使能,DI、OP为目的寄存器写选通。DRCK信号为寄存器组打入脉冲,上升沿有效。准双向I/O输入输出端口用于置数操作,经2片74LS245三态门与数据总线相连。 图2-3-3 通用寄存器数据通路

四、实验内容 1. 实验连线 K23~K0置“1”,灭M23~M0控位显示灯。然后按下表要求“搭接”部件控制电路。 连线 信号孔 接入孔 作用 有效电平 1 DRCK CLOCK 单元手动实验状态的时钟来源 上升沿打入 2 X2 K10(M10) 源部件译码输入端X2 三八译码 八中选一 低电平有效 3 X1 K9(M9) 源部件译码输入端X1 4 X0 K8(M8) 源部件译码输入端X0 5 XP K7(M7) 源部件奇偶标志:0=偶寻址,1=奇寻址 6 SI K20(M20) 源寄存器地址:0=CX ,1=DX 7 RWR K18(M18) 通用寄存器写使能 低电平有效 8 DI K17(M17) 目标寄存器地址:0=CX ,1=DX 9 OP K16(M16) 目标部件奇偶标志:0=偶寻址,1=奇寻址 2. 寄存器的读写操作 ① 目的通路 当RWR=0时,由DI 、OP 编码产生目的寄存器地址,详见下表。 通用寄存器“手动/搭接”目的编码 目标使能 通用寄存器目的编址 功能说明 RW(K18) DI(K17) OP(K16) T 0 0 0 ↑ R0写 0 0 1 ↑ R1写 0 1 0 ↑ R2写 0 1 1 ↑ R3写 ② 通用寄存器的写入 通过“I/O 输入输出单元”向R0、R1寄存器分别置数27h 、37h ,操作步骤如下: 通过“I/O 输入输出单元”向R2、R3寄存器分别置数47h 、57h ,操作步骤如下: ③ 源通路 当X2~X0=001时,由SI 、XP 编码产生源寄存器,详见下表。 通用寄存器“手动/搭接”源编码 置数 I/O=XX01h 数据来源 I/O 单元 寄存器 R0=01h K10~K7=1000 按【单拍】按钮 置数 I/O=XX11h 寄存器 R1=11h 按【单拍】按钮 K18~K16=000 K18~K16=001 置数 I/O=XX21h 数据来源 I/O 单元 寄存器 R2=21h K10~K7=1000 按【单拍】按钮 置数 I/O=XX31h 寄存器 R3=31h 按【单拍】按钮 K18~K16=010 K18~K16=011

stm32定时器的区别

STM32高级定时器、通用定时器(TIMx) 、基本定时器(TIM6和TIM7) 区别? 高级定时器TIM1和TIM8、通用定时器(TIM2,TIM3,TIM4,TIM5) 、基本定时器(TIM6和TIM7) 区别? TIM1和TIM8主要特性TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 多达4个独立通道:─ 输入捕获─ 输出比较─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA:─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获─ 输出比较─ 刹车信号输入 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理 TIMx主要功能通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括: ● 16位向上、向下、向上/向下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值 ● 4个独立通道:─ 输入捕获─ 输出比较─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 使用外部信号控制定时器和定时器互连的同步电路 ● 如下事件发生时产生中断/DMA:─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获─ 输出比较 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理 TIM6和TIM7的主要特性TIM6和TIM7定时器的主要功能包括: ● 16位自动重装载累加计数器 ● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频 ● 触发DAC的同步电路注:此项是TIM6/7独有功能. ● 在更新事件(计数器溢出)时产生中断/DMA请求 强大,高级定时器应该是用于电机控制方面的吧

arm通用寄存器及其别名

AMR寄存器的别名+ APCS 默认情况下,arm处理器中的通用寄存器被称为:r0、r1...r14等,在APCS中为arm通用寄存器定义了别名。 在某些情况下(比如多人协作编辑汇编代码,或需要修改其它人所写的汇编代码时),使用APCS所定义的别名有助于提高代码的可读性和兼容性。 arm通用寄存器及其别名对照表:

The following register names are predeclared: r0-r15 and R0-R15 a1-a4 (argument, result, or scratch registers, synonyms for r0 to r3) v1-v8 (variable registers, r4 to r11) sb and SB (static base, r9) ip and IP (intra-procedure-call scratch register, r12) sp and SP (stack pointer, r13) lr and LR (link register, r14) pc and PC (program counter, r15). arm中r12的用途 原文作者在维护1个以前的程序,该程序包括应用、库文件以及linux device driver。该程序原来使用arm-linux-gcc 3.4.3编译,现在改用arm-linux-gcc 4.1.1进行编译时发现程序无法运行。 经原文作者测试,发现当使用shared library形式编译程序后无法运行,而使用static linking形式编译程序后可正常运行。

VS1838红外遥控中断+定时器版

//说明:以下函数在STM32F405RGT6上验证过,应用于其他条件下根据自身需要做移植 // VS1838.h //********************* VS1838.h *********************// //红外遥控按键控制,接收循环108ms,占用外部中断EXIT8,定时器VS1838_TIMx //********************* VS1838.h *********************// //启用调试需要调用液晶屏显示的函数,需自己编一下 //#define VS1838_Debug 1 //启用调试,包括it.c中的调试 #define CARMP3 1 //遥控器型号定义(取消注释为MP3版,看键值程序就明白了) #define VS1838EN 1 //定义使用VS1838 #define VS1838_TIMx TIM5 //定义VS1838使用定时器 union VS1838_DAT { u8 vschar[4];//红外遥控接收数据 u32 vslong;//红外遥控接收数据 }; extern union VS1838_DAT HW; extern u8 vsit_cnt;//红外遥控中断进入计数 extern u8 vs_recnt;//红外遥控按键重复接收计数 extern u8 vs_error;//红外遥控接收代码错误标志 extern u8 vs_finish;//红外遥控中断进入计数 //红外中断初始化 voidEXTIX_Init(void); //正常返回键值0~9,非正常返回0xff u8 HW_NumConvert(void); //按键转换,执行功能 voidKeyConvert(void); extern u16 tim_temp;//计数器时间暂存值 //void VS1838_ErrorDisp(void); #ifdef VS1838_Debug extern u8 vsit_max; extern void VS1838_ErrorDisp(u16 TIM4_temp); #endif

寄存器与7种寻址方式

一、寄存器 总共有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器) CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位) DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数) 指针寄存器: SP 堆栈指针(存放栈顶地址) BP 基址指针(存放堆栈基址偏移) 变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移, 即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操 作数和运算结果,有时运算结果就是需要的存储单元地址的偏移. SI 源地址(源变址寄存器) DI 目的地址(目的变址寄存器) 控制寄存器: IP 指令指针 FLAG 标志寄存器 ①进位标志CF,记录运算时最高有效位产生的进位值。

②符号标志SF,记录运算结果的符号。结果为负时置1,否则置0。 ③零标志ZF,运算结果为0时ZF位置1,否则置0。 ④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。 ⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。 ⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。 段寄存器 CS 代码段IP DS 数据段 SS 堆栈段SP BP ES 附加段 二、七种寻址方式: 1、立即寻址方式: 操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。 这种操作数成为立即数。立即数可以是8位的,也可以是16位的。 例如: 指令: MOV AX,1234H 则: AX = 1234H 2、寄存器寻址方式: 操作数在CPU内部的寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。 这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数 因而可以取得较高的运算数度。

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器 观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:CPL P1.0

ARM处理器共有37个寄存器其中包括.

ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC 可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。

相关文档
相关文档 最新文档