中断服务特殊功能寄存器配置里的51定时器中断程序有什么作用?

STM32寄存器列表 通用定时器相关寄存器
TIMx_CR1(控制寄存器1)
9-8位:CKD[1:0]时钟分频因子,定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。
& & &定义:00(tDTS = tCK_INT),01(tDTS = 2 x tCK_INT),10(tDTS = 4 x tCK_INT)11:保留
7位:ARPE:自动重装载预装载允许位,定义:0(TIMx_ARR寄存器没有缓冲),1(TIMx_ARR寄存器被装入缓冲器)
6-5位:CMS[1:0]选择中央对齐模式,定义:00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数。
& & &01(中央对齐模式1。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向下计数时被设置)
& & &10(中央对齐模式2。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向上计数时被设置)
& & 11(中央对齐模式3,计数器交替地向上和向下计数,配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,在计数器向上和向下计数时均被设置
& & &注:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。
4位:DIR:方向,定义:0(计数器向上计数),1(计数器向下计数),注:当计数器配置为中央对齐模式或编码器模式时,该位为只读
3位:OPM:单脉冲模式,定义:0(在发生更新事件时,计数器不停止),1(在发生下一次更新事件(清除CEN位)时,计数器停止)
2位:URS:更新请求源,软件通过该位选择UEV事件的源,0(如果使能更新中断或DMA请求,则计数器溢出/下溢-设置UG位-从模式控制器产生的更新会产生)
& & & & &1:如果使能了更新中断或DMA请求,则只有计数器溢出/下溢才产生更新中断或DMA请求
1位:UDIS禁止更新,软件通过该位允许/禁止UEV事件的产生,0:允许UEV。更新(UEV)事件由计数器溢出/下溢,设置UG位,从模式控制器产生的更新,事件产生
& & & & & 具有缓存的寄存器被装入它们的预装载值
& & 1:禁止UEV。不产生更新事件,影子寄存器(ARR、PSC、CCRx)保持它们的值。如果设置了UG位或从模式控制器发出了一个硬件复位,
& & & &则计数器和预分频器被重新初始化。
0位:CEN使能计数器,定义:0(禁止计数器),1(使能计数器)注:在软件设置了CEN位后,外部时钟、门控模式和编码器模式才能工作。
& & 触发模式可以自动地通过硬件设置CEN位。在单脉冲模式下,当发生更新事件时,CEN被自动清除。
TIMx_CR2(控制寄存器2)
7位:TI1S-TI1选择,定义:0(TIMx_CH1引脚连到TI1输入),1(TIMx_CH1、TIMx_CH2和TIMx_CH3引脚经异或后连到TI1输入)
6-4位:MMS主模式选择,这3位用于选择在主模式下送到从定时器的同步信息(TRGO)定义:
& & & 000:复位 – TIMx_EGR寄存器的UG位被用于作为触发输出(TRGO)。如果是触发输入产生的复位(从模式控制器处于复位模式),
& & & & & & & & & &则TRGO上的信号相对实际的复位会有一个延迟
& & & 001:使能 – 计数器使能信号CNT_EN被用于作为触发输出(TRGO)。有时需要在同一时间启动多个定时器或控制在一段时间内使能从定时器。
& & & & & & & & & &计数器使能信号是通过CEN控制位和门控模式下的触发输入信号的逻辑或产生。
& & & & & &当计数器使能信号受控于触发输入时,TRGO上会有一个延迟,除非选择了主/从模式(见TIMx_SMCR寄存器中MSM位的描述)。
& & & 010:更新 – 更新事件被选为触发输入(TRGO)。例如,一个主定时器的时钟可以被用作一个从定时器的预分频器
& & & 011:比较脉冲 – 在发生一次捕获或一次比较成功时,当要设置CC1IF标志时(即使它已经为高),触发输出送出一个正脉冲(TRGO)
& & & 100:比较 – OC1REF信号被用于作为触发输出(TRGO) &101:比较 – OC2REF信号被用于作为触发输出(TRGO)
& & & 110:比较 – OC3REF信号被用于作为触发输出(TRGO) &111:比较 – OC4REF信号被用于作为触发输出(TRGO)
3位:CCDS:捕获/比较的DMA选择,定义:0(当发生CCx事件时,送出CCx的DMA请求),1(当发生更新事件时,送出CCx的DMA请求)
TIMx_SMCR(从模式控制寄存器)
15位:ETP:外部触发极性,该位选择是用ETR还是ETR的反相来作为触发操作,定义:0(ETR不反相,高电平或上升沿有效),1(ETR被反相,低电平或下降沿有效)
14位:ECE:外部时钟使能位,该位启用外部时钟模式2,定义:0(禁止外部时钟模式2)1(使能外部时钟模式2。计数器由ETRF信号上的任意有效边沿驱动
& & &注1:设置ECE位与选择外部时钟模式1并将TRGI连到ETRF(SMS=111和TS=111)具有相同功效。
& & &注2:下述从模式可以与外部时钟模式2同时使用:复位模式、门控模式和触发模式;但是,这时TRGI不能连到ETRF(TS位不能是’111’)。
& & &注3:外部时钟模式1和外部时钟模式2同时被使能时,外部时钟的输入是ETRF
13-12位:ETPS外部触发预分频,外部触发信号ETRP的频率必须最多是CK_INT频率的1/4。当输入较快的外部时钟时,可以使用预分频降低ETRP的频率
& & & & 定义:00(关闭预分频),01(ETRP频率除以2),10(ETRP频率除以4),11(ETRP频率除以8)
11-8位:ETF外部触发滤波,这些位定义了对ETRP信号采样的频率和对ETRP数字滤波的带宽。实际上,数字滤波器是一个事件计数器,它记录到N个事件后
& & & &会产生一个输出的跳变,定义:0000(无滤波器,以fDTS采样)0001(采样频率fSAMPLING=fCK_INT,N=2)0010(采样频率fSAMPLING=fCK_INT,N=4)
& & & &0011(采样频率fSAMPLING=fCK_INT,N=8)0100(采样频率fSAMPLING=fDTS/2,N=6)0101(采样频率fSAMPLING=fDTS/2,N=8)
& & & &0110(采样频率fSAMPLING=fDTS/4,N=6)0111(采样频率fSAMPLING=fDTS/4,N=8)1000(采样频率fSAMPLING=fDTS/8,N=6)
& & & &1001(采样频率fSAMPLING=fDTS/8,N=8)1010(采样频率fSAMPLING=fDTS/16,N=5)1011:采样频率fSAMPLING=fDTS/16,N=6
& & & &1100(采样频率fSAMPLING=fDTS/16,N=8)1101(采样频率fSAMPLING=fDTS/32,N=5)1110(采样频率fSAMPLING=fDTS/32,N=6)
& & & &1111(采样频率fSAMPLING=fDTS/32,N=8)
7位:MSM主/从模式,定义:0(无作用),1(触发输入(TRGI)上的事件被延迟了,以允许在当前定时器(通过TRGO)与它的从定时器间的完美同步。
& & & & &这对要求把几个定时器同步到一个单一的外部事件时是非常有用的)
6-4位:TS[2:0]:触发选择,这3位选择用于同步计数器的触发输入,定义:000(内部触发0(ITR0),TIM1),001(内部触发1(ITR1),TIM2)010(内部触发2(ITR2),TIM3)
& & & & & & & &011(内部触发3(ITR3),TIM4)100(TI1的边沿检测器(TI1F_ED))101(滤波后的定时器输入1(TI1FP1)110(滤波后的定时器输入2(TI2FP2)
& & & & & & & &111(外部触发输入(ETRF)注:这些位只能在未用到(如SMS=000)时被改变,以避免在改变时产生错误的边沿检测。关于定时器细节见P285表78
2-0位:SMS[2:0]从模式选择,当选择了外部信号,触发信号(TRGI)的有效边沿与选中的外部输入极性相关,定义
& & & 000:关闭从模式 – 如果CEN=1,则预分频器直接由内部时钟驱动。001:编码器模式1 – 根据TI1FP1的电平,计数器在TI2FP2的边沿向上/下计数。
& & & 010:编码器模式2 – 根据TI2FP2的电平,计数器在TI1FP1的边沿向上/下计数。
& & & 011:编码器模式3 – 根据另一个信号的输入电平,计数器在TI1FP1和TI2FP2的边沿向上/下计数。
& & & 100:复位模式 – 选中的触发输入(TRGI)的上升沿重新初始化计数器,并且产生一个更新寄存器的信号。
& & & 101:门控模式 – 当触发输入(TRGI)为高时,计数器的时钟开启。一旦触发输入变为低,则计数器停止(但不复位)。计数器的启动和停止都是受控的。
& & & 110:触发模式 – 计数器在触发输入TRGI的上升沿启动(但不复位),只有计数器的启动是受控的。
& & & 111:外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器。
注:如果TI1F_EN被选为触发输入(TS=100)时,不要使用门控模式。这是因为,TI1F_ED在每次TI1F变化时输出一个脉冲,然而门控模式是要检查触发输入的电平。
TIMx_DIER(DMA/中断使能寄存器)
14位:TDE:允许触发DMA请求,定义:0(禁止),1(允许)
12位:CC4DE:允许捕获/比较4的DMA请求,定义:0(禁止),1(允许)
11位:CC3DE:允许捕获/比较3的DMA请求,定义:0(禁止),1(允许)
10位:CC2DE:允许捕获/比较2的DMA请求,定义:0(禁止),1(允许)
9位:CC1DE:允许捕获/比较1的DMA请求,定义:0(禁止),1(允许)
8位:UDE:允许更新的DMA请求,定义:0(禁止),1(允许)
6位:TIE:触发中断使能,定义:0(禁止),1(允许)
4位:CC4IE:允许捕获/比较4中断,定义:0(禁止),1(允许)
3位:CC3IE:允许捕获/比较3中断,定义:0(禁止),1(允许)
2位:CC2IE:允许捕获/比较2中断,定义:0(禁止),1(允许)
1位:CC1IE:允许捕获/比较1中断,定义:0(禁止),1(允许)
0位:UIE允许更新中断,定义:0(禁止),1(允许)
TIMx_SR(状态寄存器)
9位:CC(1-4)OF:捕获/比较1重复捕获标记,仅当相应的通道被配置为输入捕获时,该标记可由硬件置’1’。写’0’可清除该位,定义:0(无重复捕获产生)
& & & & & &1:当计数器的值被捕获到TIMx_CCR1寄存器时,CC1IF的状态已经为’1’。
7位:BIF刹车标记中断,一旦刹车输入有效,由硬件对该位置’1’。如果刹车输入无效,则该位可由软件清’0。定义:0(无刹车),11(有刹车)
6位:TIF触发器中断标记,当发生触发事件(当从模式控制器处于除门控模式外的其它模式时,在TRGI输入端检测到有效边沿,或门控模式下的任一边沿)
& & 时由硬件对该位置’1’。它由软件清’0’,定义:0(无触发事件),1(触发器中断等待响应)
4,3,2,1位:CC(4-1)IF捕获/比较(4-1)中断标记,如果通道CC1配置为输出模式(软件清0,硬件置1(在中心对称下除外),定义:0(无匹配),1(TIMx_CNT与TIMx_CCR1匹配)
& & & & & 如果通道CC1配置为输入模式:(硬件置1,软件清0,或通过读TIMx_CCR1清’0’),定义:0(无输入捕获产生),
& & & & & 1(计数器值已被捕获(拷贝)至TIMx_CCR1(在IC1上检测到与所选极性相同的边沿)。
0位:UIF更新中断标记(硬件置1,软件清0)定义:0(无更新事件)1(更新中断等待响应。当寄存器被更新时该位由硬件置’1’)
& & - 若TIMx_CR1寄存器的UDIS=0、URS=0,当TIMx_EGR寄存器的UG=1时产生更新事件(软件对计数器CNT重新初始化);
& & - 若TIMx_CR1寄存器的UDIS=0、URS=0,当计数器CNT被触发事件重初始化时产生更新事件。(参考同步控制寄存器的说明)
TIMx_EGR(事件产生寄存器)
6位:TG产生触发事件(软件置1,硬件清0),定义:0(无动作),1(TIMx_SR寄存器的TIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA)
5位:COMG捕获/比较事件,产生控制更新(软件置1,硬件清0),定义:0(无动作),1(当CCPC=1,允许更新CCxE、CCxNE、OCxM位)注:该位只对拥有互补输出的通道有效
4,3,2,1位:CC(4-1)G:产生捕获/比较(4-1)事件(软件置1,硬件清0),定义:0(无动作),1(在通道CC1上产生一个捕获/比较事件)
& & & & & 若通道CC1配置为输出,设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA
& & & & & 若通道CC1配置为输入,当前的计数器值被捕获至TIMx_CCR1寄存器;设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。若CC1IF已经为1,则设置CC1OF=1
& & & & & 则设置CC1OF=1
0位:UG产生更新事件(软件置1,硬件清0),定义:0(无动作),1(重新初始化计数器,并产生一个更新事件。注意预分频器的计数器也被清’0’
& & (但是预分频系数不变)。若在中心对称模式下或DIR=0(向上计数)则计数器被清’0’;若DIR=1(向下计数)则计数器取TIMx_ARR的值)
TIMx_CCMR1(捕获/比较模式寄存器1)
TIMx_CCMR2(捕获/比较模式寄存器2)
输出比较和输入捕获功能不同,在寄存器中的设置也不同。
输出比较模式
15位:OC2CE:输出比较2清0使能
14-12位:OC2M[2:0]:输出比较2模式
11位:OC2PE:输出比较2预装载使能
10位:OC2FE:输出比较2快速使能
9-8位:CC2S[1:0]:捕获/比较2选择,该位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出) 01(CC2通道被配置为输入,IC2映射在TI2上)
& & & 10(CC2通道被配置为输入,IC2映射在TI1上) 11(CC2通道被配置为输入,IC2映射在TRC上。此模式仅工作在内部触发器输入被选中时。
& & & (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。
9-8位:CC4S[1:0]:捕获/比较4选择;该位定义通道的方向(输入/输出);及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入,IC4映射在TI4上)
& & & 10(CC4通道被配置为输入,IC4映射在TI3上) 11(CC4通道被配置为输入,IC4映射在TRC上。此模式仅工作在内部触发器输入被选中时。
& & & (由TIMx_SMCR寄存器的TS位选择),注:CC4S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。
7位:OC1CE:输出比较1清’0’使能,定义:0(OC1REF 不受ETRF输入的影响),1(一旦检测到ETRF输入高电平,清除OC1REF=0)
6-4位:OC1M[2:0]输出比较1模式,该3位定义了输出参考信号OC1REF的动作,而OC1REF决定了OC1、OC1N的值。OC1REF是高电平有效,而OC1、OC1N
& & & 的有效电平取决于CC1P、CC1NP位,定义:000(冻结。输出比较寄存器TIMx_CCR1与计数器TIMx_CNT间的比较对OC1REF不起作用)
& & & 001(匹配时设置通道1为有效电平。当计数器TIMx_CNT的值与捕获/比较寄存器1 (TIMx_CCR1)相同时,强制OC1REF为高),010(强制OC1REF为低)
& & & 011(翻转。当TIMx_CCR1=TIMx_CNT时,翻转OC1REF的电平)100(强制为无效电平。强制OC1REF为低)101(强制OC1REF为高)
& & & 110:PWM模式1- 在向上计数时,一旦TIMx_CNT&TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT&TIMx_CCR1时通道1
& & & & & &为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
& & & 111:PWM模式2- 在向上计数时,一旦TIMx_CNT&TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT&TIMx_CCR1时通道1
& & & & & &为有效电平,否则为无效电平。
& & & 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。
& & & 注2:在PWM模式1或PWM模式2中,只有当比较结果改变了或在输出比较模式中从冻结模式切换到PWM模式时,OC1REF电平才改变。
3位:OC1PE输出比较1预装载使能,定义:0(禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数值立即起作用)
& & 1(开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作,TIMx_CCR1的预装载值在更新事件到来时被加载至当前寄存器中)
& & 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。
& & 注2:仅在单脉冲模式下(TIMx_CR1寄存器的OPM=1),可以在未确认预装载寄存器情况下使用PWM模式,否则其动作不确定
2位:OC1FE输出比较1 快速使能,该位用于加快CC输出对触发输入事件的响应,定义:
& & 0(根据计数器与CCR1的值,CC1正常操作,即使触发器是打开的。当触发器的输入有一个有效沿时,激活CC1输出的最小延时为5个时钟周期)
& & 1(输入到触发器的有效沿的作用就象发生了一次比较匹配。因此,OC被设置为比较电平而与比较结果无关。采样触发器的有效沿和CC1输出间的延时被缩短为
& & & 3个时钟周期)OCFE只在通道被配置成PWM1或PWM2模式时起作用。
1-0位:CC1S[1:0]捕获/比较1 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上)
& 10(CC1通道被配置为输入,IC1映射在TI2上),11(CC1通道被配置为输入,IC1映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择)
& & 注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。
1-0位:CC3S[1:0]捕获/比较3 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上)
& 10(CC3通道被配置为输入,IC3映射在TI4上),11(CC3通道被配置为输入,IC3映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择)
& & 注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。
输入捕获模式
15-12位:输入捕获2滤波器
11-10位:CC2S[1:0]输入/捕获2预分频器
9-8位:CC2S[1:0]捕获/比较2选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出)01(CC2通道被配置为输入,
& & & IC2映射在TI2上),10(CC2通道被配置为输入,IC2映射在TI1上),11(CC2通道被配置为输入,IC2映射在TRC上),此模式仅工作在内部触发器输入被选中时
& & & (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。
9-8位:CC4S[1:0]捕获/比较4选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入,
& & & IC4映射在TI4上),10(CC4通道被配置为输入,IC4映射在TI3上),11(CC4通道被配置为输入,IC4映射在TRC上),此模式仅工作在内部触发器输入被选中时
& & & (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。
7-4位:IC1F[3:0]:输入捕获1滤波器,这几位定义了TI1输入的采样频率及数字滤波器长度,数字滤波器由一个事件计数器组成,记录到N个事件后会产生一个输出的跳变
& &定义:0000(无滤波器,以fDTS采样)0010(采样频率fSAMPLING=fCK_INT,N=4)0011(采样频率fSAMPLING=fCK_INT,N=8)0100(fSAMPLING=fDTS/2,N=6)
& & & & &0101(fSAMPLING=fDTS/2,N=8),0110(fSAMPLING=fDTS/4,N=6),0111(fSAMPLING=fDTS/4,N=8),1000(fSAMPLING=fDTS/8,N=6)
& & & & &1001(fSAMPLING=fDTS/8,N=8),1010(fSAMPLING=fDTS/16,N=5),1011(fSAMPLING=fDTS/16,N=6),1100(fSAMPLING=fDTS/16,N=8)
& & & & &1101(fSAMPLING=fDTS/32,N=5),0110(fSAMPLING=fDTS/4,N=6),1110(fSAMPLING=fDTS/32,N=6),0111(fSAMPLING=fDTS/4,N=8)
& & & & &1111(fSAMPLING=fDTS/32,N=8)
3-2位:IC1PSC[1:0]输入/捕获1预分频器,这2位定义了CC1输入(IC1)的预分频系数,一旦CC1E=0(TIMx_CCER寄存器中),则预分频器复位。
& & & 00(无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获),01(每2个事件触发一次捕获),10(每4个事件触发一次捕获),11(每8个事件触发一次捕获)
1-0位:CC1S[1:0]捕获/比较1选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上 & & &
& & & 10(CC1通道被配置为输入,IC1映射在TI2上),11:CC1通道被配置为输入,IC1映射在TRC上。此模式仅工作在内部触发器输入被选中时
& & & (由TIMx_SMCR寄存器的TS位选择)。注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。
1-0位:CC3S[1:0]捕获/比较3选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上 & & &
& & & 10(CC3通道被配置为输入,IC3映射在TI4上),11:CC3通道被配置为输入,IC3映射在TRC上。此模式仅工作在内部触发器输入被选中时
& & & (由TIMx_SMCR寄存器的TS位选择)。注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。
TIMx_CCER(捕获/比较使能寄存器)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
保留 CC4P CC4E 保留 CC3P CC3E 保留 CC2P CC2E 保留 CC1P CC1E
13,9,5,1位:CC(4-1)P:输入/捕获3输出极性,定义:CC1通道配置为输出-0(OC1高电平有效),1(OC1低电平有效)
& & & & & & CC1通道配置为输入:该位选择是IC1还是IC1的反相信号作为触发或捕获信号,0:不反相:捕获发生在IC1的上升沿;当用作外部触发器时,IC1不反相。
& & & & & & 1(相反,捕获发生在IC1的下降沿)注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为3或2,则该位不能被修改
128,4,0位:CC(4-1)E:输入/捕获3输出使能,定义:CC1通道配置为输出-
& & & & & & & & & & & 0(关闭- OC1禁止输出,因此OC1的输出电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位的值),1(开启)
& & & & & & & & & & & CC1通道配置为输入,该位决定了计数器的值是否能捕获入TIMx_CCR1寄存器。0(捕获禁止),1(捕获使能)
TIMx_CNT(计数器)
0-15位:CNT[15:0]计数器的值
TIMx_PSC(预分频器)
0-15位:PSC[15:0]预分频器的值,计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC[15:0]+1)。
& & & &PSC包含了每次当更新事件产生时,装入当前预分频器寄存器的值;更新事件包括计数器被TIM_EGR的UG位清’0’或被工作在复位模式的从控制器清’0’
TIMx_ARR(自动重装载寄存器)
15-0位:ARR[15:0]自动重装载的值,ARR包含了将要传送至实际的自动重装载寄存器的数值,当自动重装载的值为空时,计数器不工作
TIMx_CCR1(捕获/比较寄存器1)
TIMx_CCR2(捕获/比较寄存器1)
TIMx_CCR3(捕获/比较寄存器1)
TIMx_CCR4(捕获/比较寄存器1)
15-0位:CCR1[15:0]捕获/比较1的值,若CC1通道配置为输出:CCR1包含了装入当前捕获/比较1寄存器的值(预装载值)。
& & & &如果在TIMx_CCMR1寄存器(OC1PE位)中未选择预装载特性,写入的数值会被立即传输至当前寄存器中。否则只有当更新事件发生时,
& & & &此预装载值才传输至当前捕获/比较1寄存器中。当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并在OC1端口上产生输出信号。
& & & &若CC1通道配置为输入:CCR1包含了由上一次输入捕获1事件(IC1)传输的计数器值
TIMx_DCR(DMA控制寄存器)
12-8位:DBL[4:0]DMA连续传送长度,这些位定义了DMA在连续模式下的传送长度(当对TIMx_DMAR寄存器进行读或写时,定时器则进行一次连续传送),
& & & &即:定义传输的次数,传输可以是半字(双字节)或字节:00000:1次传输 00001:2次传输 ...... 00010:3次传输 ...... 10001:18次传输
4-0位:DBA[4:0]DMA基地址,这些位定义了DMA在连续模式下的基地址(当对TIMx_DMAR寄存器进行读或写时),DBA定义为从TIMx_CR1寄存器所在地址开始的偏移量
& & & 00000:TIMx_CR1, 00001:TIMx_CR2, 00010:TIMx_SMCR, ......
TIMx_DMAR(连续模式的DMA地址)
15-0位:DMAB[15:0]DMA连续传送寄存器,对TIMx_DMAR寄存器的读或写会导致对以下地址所在寄存器的存取操作,TIMx_CR1地址 + DBA + DMA索引,其中:
& & & &"TIMx_CR1地址"是控制寄存器1(TIMx_CR1)所在的地址:"DBA"是TIMx_DCR寄存器中定义的基地址:"DMA索引"是由DMA自动控制的偏移量,
& & & &它取决于TIMx_DCR寄存器中定义的DBL。
相关日志:【图文】特殊功能寄存器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
特殊功能寄存器
上传于||文档简介
&&C1​系​列​单​片​机​特​殊​功​能​寄​存​器​介​绍​。
大小:1.57MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢单片机的特殊功能寄存器
查看: 267|
摘要: 下图中我们能看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时 ...
&&下图中我们能看出,在51内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。
& 对上面的图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到对应I/O口的锁存器就能了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表1
程序状态字
中断优先级控制寄存器
P3口锁存器
中断允许控制寄存器
P2口锁存器
串行口锁存器
串行口控制寄存器
P1口锁存器
定时器/计数器1(高8位)
定时器/计数器1(低8位)
定时器/计数器0(高8位)
定时器/计数器0(低8位)
定时器/计数器方式控制寄存器
定时器/计数器控制寄存器
数据地址指针(高8位)
数据地址指针(低8位)
P0口锁存器
控制寄存器
&特殊功能寄存器地址映象表(一)&
&特殊功能寄存器地址映象表(二)&
&特殊功能寄存器地址映象表(三)&
下面,我们介绍一下几个常用的SFR,看图2。
1、ACC:累加器,常常用A表示。这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后我们将学到指令,能发现,所有的运算类指令都离不开它。
2、B:一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW:程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们能了解CPU的当前状态,并作出对应的处理。它的各位功能请看表2
PSW也称为标志寄存器,了解这个对于了解单片机原理非常的重要,存放各有关标志。其结构和定义如下:
& 下面我们逐一介绍sfr各位的用途
(1)CY:进位标志。用于表示Acc.7有否向更高位进位。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。
例:78H+97H(10111)
(2)AC:辅助进位标志也叫半进位标志。& 用于表示Acc.3有否向Acc.4进位
例:57H+3AH(11010)
(3)F0:用户标志位,由我们(编程人员)决定什么时候用,什么时候不用。
(4)RS1、RS0:工作寄存器组选择位。这个我们已知了。&&&&&&&&&&&&& RS1、RS0 = 00 —— 0区(00H~07H)
&&&&&&&&&&&&& RS1、RS0 = 01 —— 1区(08H~0FH)
&&&&&&&&&&&&& RS1、RS0 = 10 —— 2区(10H~17H)
&&&&&&&&&&&&& RS1、RS0 = 11 —— 3区(18H~1FH)&
(5)0V:溢出标志位。 表示Acc在有符号数算术运算中的溢出,什么是溢出我们稍后再谈吧。
(6)P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,不然为0。
例:某运算结果是78H(),显然1的个数为偶数,所以P=0。
4、DPTR(DPH、DPL):数据指针,能用它来访问外部数据存储器中的任一单元,如果不用,也能作为通用寄存器来用,由我们自已决定如何使用。16位,由两个8位寄存器DPH、DPL组成。主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针。
5、P0、P1、P2、P3:这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
6、SP:堆栈指针。(专用于指出堆栈顶部数据的地址。) 
&& 堆栈介绍:日常生活中,我们都注意到过这样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去的则放在最下面,在取的时候正好相反,先从最上面取,这种现象我们用一句话来概括:“先进后出,后进先出”。请大家想想,还有什么地方有这种现象?其实比比皆是,建筑工地上堆放的砖头、材料,仓库里放的货物,都是“先进后出,后进先出”,这实际是一种存取物品的规则,我们称之为“堆栈”。
&& 在单片机中,我们也能在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是“先进后出,后进先出”,我们称之为“堆栈”。为什么需要这样来存放数据呢?存储器本身不是能按地址来存放数据吗?对,知道了地址的确就能知道里面的内容,但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗?如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就能了(看图2)如果第一个数据在27H,那么第二、三个就在28H、29H了。所以利用堆栈这种办法来放数据能简化操作
&& 那么51中堆栈什么地方呢?单片机中能存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM)中开辟一块地方,用于堆栈,但是用内存的哪一块呢?还是不好定,因为51是一种通用的单片机,各人的实际需求各不相同,有人需要多一些堆栈,而有人则不需要那么多,所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分了,把分的权利给用户(编程者),根据自已的需要去定吧,所以51单片机中堆栈的位置是能变化的。而这种变化就体现在SP中值的变化,看图2,SP中的值等于27H不就相当于是一个指针指向27H单元吗?当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置,比如一开始指针是指向27H单元的,那么第一个数据的位置是28H单元,而不是27H单元,为什么会这样,我们在学堆栈命令时再说明。其它的SFR,我们在用到时再介绍。
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:

我要回帖

更多关于 定时器控制寄存器 的文章

 

随机推荐