用8253定时器计数器器测量脉冲信号的频率。fosc=12MHZ

STM32定时器做外部脉冲信号计数器用 - ylzhuai的日志 -
电子工程世界-论坛
STM32定时器做外部脉冲信号计数器用
热度 1已有 27881 次阅读 11:31
|个人分类:|
今天,尝试使用STM32的计数器的外部时钟功能,来对外部脉冲信号进行计数。效果还不错。具体设置如下:
/*&&&&&& TIM3_CH2 为脉冲输入口1.& 配置GPIO_GPIOA_PIN7 输入2.& 配置TIM3 计数器在TI2 端的上升沿计数:&&& 1). TIMx_CCMR1: CC2S =01;&&&&& 配置通道2检测TI2输入的上升沿&&& 2). TIMx_CCMR1:IC2F& =000;&&&& 选择输入滤波器带宽&&& 3). TIMx_CCER:& CC2P =0;&&&&&&&& 配置上升沿极性&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& √&&& 4). TIMx_SMCR:& SMS& =111;&&&& 选择定时器外部时钟模式1 &&& 5). TIMx_SMCR:& TS&&& =110;&&&& 选择TI2作为触发输入源&&&&&&&&&&&&&&&&&& √&&& 6). TIMx_CR1:&&& CEN& =1;&&&&&&& 启动计数器*/
void TIM3_External_Clock_CountingMode(void){&&& GPIO_InitTypeDef GPIO_InitS&&& TIM_TimeBaseInitTypeDef& TIM_TimeBaseS&//&& TIM_ICInitTypeDef& TIM_ICInitS
&&& RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);&&& &&& GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;&&& GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;&&& GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&& GPIO_Init(GPIOA, &GPIO_InitStructure);
&&& RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);&&& TIM_DeInit(TIM3); &&& TIM_TimeBaseStructure.TIM_Period = 0xFFFF; &&& TIM_TimeBaseStructure.TIM_Prescaler = 0x00; &&& TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; /*定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 使用的采样频率之间的分频比为1*/&&& TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; &&& TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure); // Time base configuration& &&& /*&&& tmpccmr1 |= (uint16_t)(TIM_ICFilter && 12);&&&&&& // CCMR1_IC2F&&& tmpccmr1 |= (uint16_t)(TIM_ICSelection && 8);&& // CCMR1_CC2S
&&& 由TIM_TIxExternalCLK1Source_TI2决定了&&& TIM_ICSelection=TIM_ICSelection_DirectTI:&&&& CCMR1_CC2S = 01;
&&& TIM_ICPolarity_Rising&&&&&&&&&&&&&& = CCER_CC2P&&& TIM_TIxExternalCLK1Source_TI2 = TIM_SMCR_TS
&&& 该函数定义了TIM_SlaveMode_External1;外部时钟模式1*/&&&&&&&&&&&&&&&&&&&&&&&&&&&& TIM_TIxExternalClockConfig(TIM3,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);//& TIM_SetCounter(TIM3, 0);&& // 清零计数器CNT//& TIM_Cmd(TIM3,ENABLE);&
// 下面是使用方法:
&&& TIM3_External_Clock_CountingMode();&&& TIM_SetCounter(TIM3, 0);&& // 清零计数器CNT&&& TIM_Cmd(TIM3,ENABLE);& &&& SecCnt = 0;&&& TFgs.Secok = 0;&&& i=0;&&& while(1)&&& {&&&&&&& Delay_Nms(1000);&&&&&&&&&&& CountPulse = TIM_GetCounter(TIM3);&&&&&&& &&&&&&&&&&& DisplayDat(10,10+24*i,CountPulse,5);
&&&&&&&&&&& TFgs.Secok = 0;&&&&&&&&&&& if(++CountTims&=120)&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& TIM_Cmd(TIM3,DISABLE);& &&&&&&&&&&&&&&&&&&& CountPulse = TIM_GetCounter(TIM3);&&&&&&& &&&&&&&&&&&&&&&&&&& DisplayDat(10,10+24*i,CountPulse,5);&&&&&&&&&&&&&&&&&&& if(++i&11)i=0;&&&&&&&&&&&&&&&&&&& TIM_SetCounter(TIM3, 0);&& // 清零计数器CNT&&& TIM_Cmd(TIM3,ENABLE);& &&& SecCnt = 0;&&& TFgs.Secok = 0;&&&&&&&&&&&&&&&&&&& CountTims =0;&&&&&&&&&&& }&&& };
上述程序经过硬件测试。
评论 ( 个评论)
Powered by【7第7章 定时计数器】-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
【7第7章 定时计数器】
来源:互联网 更新时间: 2:02:40 责任编辑:王亮字体:
本文由02王爽贡献
单片微型计算机与 接口技术
第7章 定时计数器
本章介绍的主要内容
定时计数器结构和工作原理 定时计数器的控制寄存器 定时计数器的控制寄存器 定时计数器的应用编程
7?1 8XX51定时/计数器结构和工作原理 8XX51定时 定时/
51系列单片机片内有 系列单片机片内有2 16位定时 计数器: 位定时/ ★ 51系列单片机片内有2个16位定时/计数器:定 时器0(T 和定时器1(T 时器0(T0)和定时器1(T1)。 两个定时器都有定时或事件计数的功能, ★ 两个定时器都有定时或事件计数的功能,可 用于定时控制、延时、 用于定时控制、延时、对外部事件计数和检测等 场合 定时/计数器是16位的加1计数器。 16位的加 ★ 定时/计数器是16位的加1计数器。 位特殊功能寄存器TH0 TL0构成 TH0和 构成, T0由2个8位特殊功能寄存器TH0和TL0构成, 位特殊功能寄存TH1 TL1构成 TH1和 构成。 T1由2个8位特殊功能寄存TH1和TL1构成。 定时器可由软件设置为定时或计数工作方式。 ★定时器可由软件设置为定时或计数工作方式。 ★T0和T1受特殊功能寄存器TMOD和TCON控制。 特殊功能寄存器TMOD和TCON控制。 TMOD 控制
1. 定时工作方式
★工作方式为定时时,定时器计数的脉冲是 工作方式为定时时, 单片机片内振荡器的12分频 由51单片机片内振荡器的 分频。 单片机片内振荡器的 分频。 每经过一个机器周期,定时器(T ★每经过一个机器周期,定时器 0或T1)的数 的数 值加1直至计数满产生溢出 直至计数满产生溢出。 值加 直至计数满产生溢出。 采用12MHz晶振时,每个机器周 晶振时, 如:当8051采用 采用 晶振时 期为1μs,计5 个机器周期即定时5 μs 。 期为 , 个机器周期即定时
2. 计数工作方式
工作方式为计数时,通过引脚T (P3.4)和 ★ 工作方式为计数时,通过引脚T0(P3.4)和T1(P3.5) 对外部脉冲信号计数。 对外部脉冲信号计数。 当输入脉冲信号产生由1 的下降沿时, ★ 当输入脉冲信号产生由1至0的下降沿时,定时器的 值加1, 在每个机器周期CPU采样T CPU采样 的输入电平。 值加1, 在每个机器周期CPU采样T0和T1的输入电平。 若前一个机器周期采样值为高, 若前一个机器周期采样值为高,下一个机器周期采样 值为低, 值为低,则计数器加 1。 由于检测一个1 的跳变需要二个机器周期, ★ 由于检测一个1至0的跳变需要二个机器周期,故最 高计数频率为振荡频率的1/24 1/24。 高计数频率为振荡频率的1/24。
7?2 定时计数器的控制寄存器 定时计数器的控制寄存器
★定时器共有两个控制寄存器: 定时器共有两个控制寄存器: 定时器控制TCON(88H) 定时器控制 ( 定时器工作模式寄存器TMOD(89H) 定时器工作模式寄
1. 工作模式寄存器 工作模式寄存器TMOD(89H)
TMOD用于控制 0和T1的操作模式。其各位的 用于控制T 的操作模式。 用于控制 定义如下: 定义如下: 定时器T 定时器T 定时器 1 定时器 0
TMOD (89H) D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0
GATE C/T M1 M0
★ GATE:门控信号 : GATE=0,TRx=1时即可启动定时器工作 ; , 时即可启动定时器工作 GATE=1, TRx=1,INTx=1才可启动定时器工作。 , 才可启动定时器工作。 才可启动定时器工作 ★ C/T:定时器 计数器选择位 :定时器/计数器选择位 C/T=1,为计数器方式; ,为计数器方式; C/T=0,为定时器方式。 ,为定时器方式。 ★ M1 M0 00: 01: 10: 11: 工作模式选择位 工作方式0( 位方式 位方式)。 工作方式 (13位方式)。 工作方式1( 位方式 位方式)。 工作方式 (16位方式)。 工作方式2( 位自动再装入方式 位自动再装入方式)。 工作方式 (8位自动再装入方式)。 工作方式3( 位方式)。 工作方式 (T0为2个8位方式)。 个 位方式
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号

我要回帖

更多关于 可编程定时器 计数器 的文章

 

随机推荐