使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。
芯片:STM32F103C8T6
输出:PA0、PA12(TIM1_ETR)、USART1
配置界面
TIM1配置
Period为计数溢出周期
代码应用
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));
printf("num=%d\r\n",htim1.Instance->CNT);
}
/* USER CODE END 3 */
标准库获取计数器值用TIM_GetCounter函数,HAL函数中,直接调用值即可,好一顿找……
关键字:STM32CubeMX ETR 外部脉冲 计数器
引用地址:
STM32CubeMX:ETR外部脉冲计数器
推荐阅读最新更新时间:2024-03-16 16:14
基于51单片机定时器0计时计数器1计数的霍尔传感器精确测速
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit RW=P2^6;//定义LCD1602液晶显示器读写端 sbit RS=P2^5;//定义LCD1602液晶显示器数据命令端 sbit EN=P2^7;//定义LCD1602液晶显示器使能端 sbit qiting=P3^0;//定义启停按键 uchar qitingnum;//定义启停次数变量 uint count;//定时器0定时中断次数变量 unsigned long speed=0;//定义速度变量 uchar co
[单片机]
干簧管计数器中单片机中断的设计实现
在本实验中,要设计一个干簧管计数器,并用数码管来显示。在本例中,还要接触单片机一个重要的功能“中断”。 干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。下图是它的结构示意图。 平时,玻璃管中的两个由特殊材料制成的簧片是分开的。 当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。因此,作为一种利用磁场信号来控制的线路开关器件,干簧管可以作
[单片机]
STM32f103 tim3_etr完成高频信号的频率计算
简介:timx可以定时,可以进行输入捕获,输入捕获可以测频率可测脉冲宽度,这就是这个实验要用到的功能。测量脉冲个数:每一个TIM都一个自己的计数器,和一个自己的预装载寄存器ARR.这里既然这是为了计数,那么设置ARR的值为0xFFFF,最大值。 学习stm32已经有一段时间了,接到第一个项目的时候是关于stm32f051的ad配置和da配置,本科时候连51都没接触过的人一上来就是32位单片机,着实让我蛋疼菊紧的很。还好慢慢的啃了中文手册和网上的一些例程,总算是完成的功能。这些个有时间再整理上传吧。 之后又弄了些103的东西,今天主要整理一下在进行信号频率计算的时候遇到的一些问题和解决办法,以便日后查看。也希望给碰到类似问题
[单片机]
S7-1200的计数器包含3种计数器的介绍
S7-1200 计数器 S7-1200的计数器为IEC计数器,用户程序中可以使用的计数器数量仅受CPU的存储器容量限制。 这里所说的是软件计数器,最大计数速率受所在OB的执行速率限制。指令所在OB的执行频率必须足够高,以检测输入脉冲的所有变化,如果需要更快的计数操作,请参考高速计数器(HSC)。 注:S7-1200的IEC计数没有计数器号(即没有C0、C1这种带计数器号的计数器)。 S7-1200的计数器包含3种计数器,指令位置参见图1: 1.计数器(CTU) 2.减计数器(CTD) 3.加减计数器(CTUD) 图1 指令位置 对于每种计数器,计数值可以是任何整数数据类型,并且需要使用每种整数对应的数据类型的DB结构(
[嵌入式]
51中断-定时器/计数器中断
什么时中断: 是指在执行程序的过程中,当出现每种情况,发出紧急的事件或其他情况时,有服务对象向CPU发出中断请求的信号,CPU暂时中断当前的程序的执行,而转去执行相应的处理程序,待处理程序完毕以后,再返回来执行原来被中断的程序。 关于中断以定时/计数器0中断为例; void timer0_init() { EA = 1; //打开总中断; TMOD |= 0x01; //选定定时/计数器0的工作的方式 TH0 = (65536 - 20000) / 256; TL0 = (65536 - 20000) % 256; //初始化定时/计数器的值 ET0 = 1; //打
[单片机]
17课:单片机定时器/计数器的方式控制字
从上一节我们已经得知,单片机中的定时/计数器都能有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。 在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。顺便说一下,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。 TMOD结构 从图1中我们能看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0,至于这里面是什么意思,我们下面介绍。 TCON结构 从图2中我们能看出,TCON也被分成两部份,高4位用于定时/计
[单片机]
STM32CubeMX系列 | I2C总线
1. 简介 1.1 I2C总线介绍 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速I2C总线一般可达400kbps以上。下面从物理层和协议层两方面来了解I2C I2C物理层:可连接多个I2C通讯设备,支持多个通讯主机和从机;每个连接到总线的设备都有一个独立的地址,主机利用这个地址进行不同设备之间的访问;总线通过上拉电阻接到电源,当I2C设备空闲时会输出高阻态;多主机同时使用总线时,利用仲裁方式觉得由哪个设备占用总线;有三种
[单片机]
6. avr定时器/计数器1 --TC1 --输入捕捉模式 (捕获外部事件模式)
T/C 的输入捕捉单元可用来捕获外部事件,并为其赋予时间标记以说明此时间的发生时刻。外部事件发生的触发信号由引脚ICP1 (PD6)输入,也可通过模拟比较器单元来实现。时间标记可用来计算频率、占空比及信号的其它特征,以及为事件创建日志。当引脚ICP1 上的逻辑电平( 事件) 发生了变化,或模拟比较器输出ACO 电平发生了变化,并且这个电平变化为边沿检测器所证实,输入捕捉即被激发:16 位的TCNT1 数据被拷贝到输入捕捉寄存器ICR1,同时输入捕捉标志位ICF1 置位。如果此时ICIE1 = 1,输入捕捉标志将产生输入捕捉中断。中断执行时ICF1 自动清零,或者也可通过软件在其对应的I/O 位置写入逻辑 1” 清零。读取ICR1
[单片机]