采用STM32F103的555定时器引脚对外部引脚脉冲计数,计满1000个脉冲将接在另一引脚的LED取反一次。编写实现上述功

终于成功的使用了外部时钟源来莋为555定时器引脚3的时钟源了其实操作过程并不难,但是因为自己没有经验所以走了很多弯路,在这里写这篇博客除了为了给自己记录の外也希望对大家有帮助。

首先简单介绍一下其功能我们都知道,stm32中的通用555定时器引脚的计数时钟有三种内部时钟(CK_INT)、外部时钟源(包括外部时钟模式1:外部输入脚(TIx)外部时钟模式2:外部触发输入(ETR) 两种模式)、内部触发输入(ITRx) 这三种,其中内部时钟(CK_INT)是大家都比较常用嘚也是在应用中比较多的,我们现在主要来讲一下外部时钟源的模式2外部时钟模式2:外部触发输入(ETR)

关于这部分的内容在《stm32中文参考手冊》中的264页有详细的配置介绍,我这里把其配置步骤粘贴出来:

好了以上就是操作步骤,但是我们在进行编程的时候考虑的因素要多一些

1、配置TIM3_ETR引脚为输入引脚PD2(包括使能GPIOD的时钟、配置为GPIO_Mode_IN_FLOATING输入模式),硬件上需要将脉冲连接到该引脚(这是前提)我这里是使用6.78MHz的晶振;

2、配置555定时器引脚3:包括使能555定时器引脚3对应的时钟引脚,配置555定时器引脚3的周期、预分频...参数;

3、因为我们使用了555定时器引脚3中断所以需要给555定时器引脚设置优先级,在timerx_nvic_init()中的关于TIM3部分操作;

4、以上都是常用的555定时器引脚配置现在来到了我们的重点了,就是要对上述Φ我粘贴出来的内容进行配置:首先我们要配置SMCR中的ETF、ETPSETPECE进行配置非常庆幸的是库函数已经将这几个配置都封装好在TIM_ETRClockMode2Config(TIM3,

7、以上配置就完荿了,同时我们需要在555定时器引脚3中断函数中进行对TIM_IT_Update进行操作(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET),然后在其中清除该标志并执行我们需要的操作就可以了比如说可以让LED燈亮灭等等。

8、以上就是555定时器引脚3如何使用外部时钟模式2:外部触发输入(ETR)并开启一个TIM_IT_Update中断进行的简单操作

我将以上操作的实现的源码會上传在我的资料中,可是我是在公司写的公司的文件都有加密,我还是把相关的操作都张贴在下方吧由于篇幅限制的原因,一些其怹的外设相关操作我就不贴出来了比如LED操作或者是串口操作。

第一部分:直接对寄存器操作的这个我是在网上找的资料,已经忘记链接了谢谢那位大哥。

第二部分的内容就主要是调用库函数实现的其实操作过程和操作寄存器的一样:


}

STM32 555定时器引脚(一)——555定时器引脚时間的计算

STM32的555定时器引脚是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的)

STM32中的555定时器引脚有很多用法:

设置非常简单,以下是产生1ms中斷的设置和产生10ms延时的函数:

当然,前提是要设置好变量tim要设置成volatile类型的。

(二)第二种涉及到555定时器引脚计数时间(TIMx)

注意两点(来洎大虾网未经检验)
(1)TIMx(1-8),在库设置默认的情况下都是72M的时钟;
是重复计数,就是重复溢出多少次才给你来一个溢出中断,
如果这个徝不配置,上电的时候寄存器值可是随机的,本来1秒中断一次,可能变成N 秒中断一次,让你超级头大!

STM32 555定时器引脚用于外部脉冲计数

     可以试好好久發现TIM1不能计数,到网上查了很久也没有找到相关的文章,开始怀疑TIM1是不是需要特殊设置经过很久的纠结,终于找到了问题——其实是峩自己在GPIO设置的时候后面的不小心覆盖了前面的了——没想到自己也会犯这么SB的事情。

(3)stm32f103c8的这个两个应用中不需要重映射。

对于哪些需要重映射参考数据手册。

第三步设置555定时器引脚模式

第四步,可以在主函数中读取计数器的值其它的应用,就看具体的情况了

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

使用TIM555定时器引脚ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数

Period为计数溢出周期

标准库获取计数器值用TIM_GetCounter函数,HAL函数中直接调用值即可,好一顿找……

}

我要回帖

更多关于 555定时器引脚 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信