使用STM32的TIMER进行外部计数

发布者:pcwg最新更新时间:2017-10-27 来源: eefocus关键字:STM32  TIMER  外部计数 手机看文章 扫描二维码
随时随地手机看文章

使用ETR引脚的输入信号作为计数时钟,本例程使用Timer 2,其ETR输入引脚为PA1,该引脚工作模式为输

入模式,Timer的工作模式为从模式;另外使用PC6输出一模拟方波时钟信号。

测试时将PC6与PA1短接。(用户也可另外连接一个时钟信号到PA1引脚上。)

代码见下:

int main(void)

{

    unsigned char i_Loop;

    unsigned char n_Counter;

#ifdef DEBUG

  debug();

#endif

    RCC_Configuration();        // System Clocks Configuration

    NVIC_Configuration();        // NVIC configuration

    GPIO_Configuration();        // Configure the GPIO ports

    TIM_TimeBaseStructure.TIM_Period = 0xFFFF;

    TIM_TimeBaseStructure.TIM_Prescaler = 0x00;

    TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);        // Time base configuration

    TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

    TIM_SetCounter(TIM2, 0);

    TIM_Cmd(TIM2, ENABLE);

    for(i_Loop = 0; i_Loop < 100; i_Loop ++) {

        GPIO_SetBits(GPIOC, GPIO_Pin_6);

        Delay(10);

        GPIO_ResetBits(GPIOC, GPIO_Pin_6);

        Delay(10);

    }

    n_Counter = TIM_GetCounter(TIM2);

    while (1) {

    }

}

前三行进行了时钟、中断、和I/O口的配置。然后进行Timer的基本配置,计数器自动装载值为0xFFFF,计

数频率不分频,定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比为1,计数

器向上计数。

TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

使用ETR时钟作为计数时钟需要设置为外部时钟模式2,故调用该函数,

在设置时

1、关闭预分频:TIM_ExtTRGPSC_OFF。可选项:

TIM_ExtTRGPSC_OFF      0x0000

TIM_ExtTRGPSC_DIV2     0x1000 

TIM_ExtTRGPSC_DIV4     0x2000

TIM_ExtTRGPSC_DIV8     0x3000

2、外部触发极性ETR不反相,高电平或上升沿有效:TIM_ExtTRGPolarity_NonInverted。可选项:

TIM_ExtTRGPolarity_Inverted和TIM_ExtTRGPolarity_NonInverted。

3、外部触发无滤波器:0000。

   可选项:

    0:无滤波器,以fDTS采样

    1:采样频率fSAMPLING=fCK_INT,N=2

    2:采样频率fSAMPLING=fCK_INT,N=4

    3:采样频率fSAMPLING=fCK_INT,N=8

    4:采样频率fSAMPLING=fDTS/2,N=6

    5:采样频率fSAMPLING=fDTS/2,N=8

    6:采样频率fSAMPLING=fDTS/4,N=6

    7:采样频率fSAMPLING=fDTS/4,N=8

    8:采样频率fSAMPLING=fDTS/8,N=6

    9:采样频率fSAMPLING=fDTS/8,N=8

    10:采样频率fSAMPLING=fDTS/16,N=5

    11:采样频率fSAMPLING=fDTS/16,N=6

    12:采样频率fSAMPLING=fDTS/16,N=8

    13:采样频率fSAMPLING=fDTS/32,N=5

    14:采样频率fSAMPLING=fDTS/32,N=6

    15:采样频率fSAMPLING=fDTS/32,N=8

TIM_SetCounter(TIM2, 0);

初始化Timer的计数器初始值为0;

TIM_Cmd(TIM2, ENABLE);

启动Timer2,模拟一个方波时钟信号,输出100个Clock在PC6上。此时PA1接收到该波形,Timer2开始计数,计数结果保存在Timer的计数寄存器(Counter Register)中。通过TIM_GetCounter(TIM2)读出


关键字:STM32  TIMER  外部计数 引用地址:使用STM32的TIMER进行外部计数

上一篇:STM32F103将JTAG口重映射成为普通GPIO
下一篇:利用stm32f103的TIM2实现精确延时

推荐阅读最新更新时间:2024-03-16 15:41

GaapSense技术 使无线传输干扰降至8%以下
根据美国无线电公会(CTIA- The Wireless Association)指出,美国拥有约3.21亿台Wi-Fi功能的智能手机、笔记本电脑和平板电脑等设备,比目前美国约3.15亿的人口数更多;而这还不包括约数百万台同样采用2.4GHz频段的蓝牙与ZigBee装置。   因此,这可能会形成一种普遍的问题——各种设备之间的信号冲突干扰,导致无线设备的应用减缓。不过,透过一种名为GapSense的软件新技术,可望避免无线设备信号传输冲突,克服同一频段内的信号干扰问题。   在本周于意大利举行的2013年IEEE国际会议上,美国密西根大学电子工程学系教授Kang Shin在其题为“GapSense: Lightweight C
[模拟电子]
GaapSense技术 <font color='red'>使</font>无线传输干扰降至8%以下
STM32 串口采用DMA方式收发
什么是DMA —- Directional Memory Access, 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作 我们通过以下几方面学习串口DMA: 一、如何理解DMA 对于DMA,打个比方就很好理解: 角色预设: 淘宝店主 —- STM32 MCU 快递员 —- 外设(如UART,SPI) 发货室 —- DMA 1、首先你是一个淘宝店主,如果每次发货收货都要跟快递沟通交涉会很浪费时间和精力。 2、然后你就自己建了一个发货室,发货室里有好多个货柜箱子,每个箱子上都写着快递名字(如果申通快递,顺丰
[单片机]
stm32 窗口看门狗 WWDG
窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往下递减计数,当减到一个固定值0x40时还不喂狗的话,产生一个MCU复位,这个值叫窗口的下限,是固定的值,不能改变 窗口看门狗(WWDG)的时钟来自PCLK1,即挂接在APB1总线上,APB1时钟最大为36M 窗口值由配置寄存器WWDG_CFR的 位设置,所以最大值0x7F 当递减计数器递减到0x40的时候,还不会马上产生复位,如果使能了提前唤醒中断,则产生提前唤醒中断,提醒喂狗,随后将复位 WWDG配置步骤 1.使能WWDG时钟 2.设置WWDG窗口值 3.设置WWDG预分频因子 4.初始化NVIC外设,设置WWDG中断优先级 5.初始化计数
[单片机]
Solutions Gallery,使物联网开发更加便捷
作便捷的新网站和Solution Gallery开放全部Synergy生态系统使用权,为IoT开发提供了高起点。 2018年3月5日,日本东京讯 – 全球领先的半导体解决方案供应商瑞萨电子株式会社(TSE:6723)今日宣布,推出更新的Renesas Synergy™ Platform 网站和Solutions Gallery,以使Synergy生态系统从软件到硬件的威力得以在开发人员手中发挥出来。此次网站更新使Renesas Synergy用户能够更容易地利用Synergy生态系统的全部资源,包括LTE蜂窝、蓝牙低功耗、先进的Wi-Fi连接和全面的安全解决方案。此外,用户现在可以更简便地获得强大的应用解决方案,例如与企业云服
[网络通信]
关于Stm32学习中的惨痛教训
芯片擦除成功,但板子不能运行 没有出现 Application running 原因如图所示 左上方的Reset and Run 没有勾选。 操作路径为: options for target --- Utilities ---- Setting 即可 关键步奏 就正常了; 小结: 当出现 一定是bsp_key.h文件中缺少#include“stm32f10x.h” 当出现 说明 digitalToggle 函数没有定义好。如果你觉得定义过了,那木一定是极细微的错误,例如多写了、少写了、错写了一个字母(就这样小错误会让你心烦气躁;浪费大量的时间)。
[单片机]
关于<font color='red'>Stm32</font>学习中的惨痛教训
stm32(二) stm32中断优先级的设置
stm32优先级 1.优先级等级: STM32用户能分配的优先级有16级,也就是用优先级寄存器NVIC- IP 的高四位来表示莫个中断的优先级。 2.优先级组: 在STM32中将一个中断的优先级分为:抢占优先级和子优先级。 在进行优先级判断的时候先是比较抢占优先级然后比较子优先级。 在固件库中用变量分别表示抢占优先级和子优先级: NVIC_InitTypeDef.NVIC_IRQChannelPreemptionPriority;(抢占优先级) NVIC_InitTypeDef.NVIC_IRQChannelSubPriority;(子优先级) 优先级组就是对抢占优先级和
[单片机]
stm32 TIM2定时器触发ADC、DMA采样
使用ADC的定时器触发ADC转换的功能,然后使用DMA进行数据的搬运!采用TIM2定时器的触发间隔,实现ADC定时采样转换的功能,然后可以在程序的死循环中一直检测DMA转换完成标志,然后进行数据的读取,或者使能DMA转换完成中断,这样每次转换完成就会产生中断。 做示波器时,由于要做调整横坐标显示倍数增大和缩小,故需要改变采样频率,也就是改变TIM2 的定时器时间间隔,在TIM2初始化函数定义时,添加u16 Value参数,第一次调试时,设置如下: 定时器2初始化函数void TIM2_Configuration(u16 Value),配置TIM_Period = Value - 1; TIM_TimeBaseStructu
[单片机]
再造STM32---第十一部分:GPIO—位带操作
本章参考资料:《STM32F4xx 中文参考手册》存储器和总线构架章节、 GPIO 章节,《Cortex®-M4 内核编程手册》 2.2.5 Bit-banding。学习本章时,配套这些参考资料学习效果会更佳。 11.1 位带简介: 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。 51 单片机中通过关键字 sbit 来实现位定义, F429 中没有这样的关键字,而是通过访问位带别名区来实现。 在 F429 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有自己的
[单片机]
再造STM32---第十一部分:GPIO—位带操作
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved