-
stm32外部脉冲计数
2019-03-23 10:17:57stm32外部脉冲计数 -
STM32外部脉冲计数程序
2018-07-25 16:31:48stm32外部脉冲计数程序,板子不同可以自己修改,实测可用 -
STM32定时器做外部脉冲信号计数器用
2020-08-03 15:21:34今天,尝试使用STM32的计数器的外部时钟功能,来对外部脉冲信号进行计数。效果还不错。 -
STM32简单外部脉冲计数程序
2018-07-25 16:33:24stm32外部脉冲计数程序,可自己根据不同需求修改程序,可用(看到有朋友需要这样的程序,包括串口接收并波形显示,并存储,以及回放功能,所以顺便做了一个,希望对大家有用! ) -
STM32F407捕捉外部脉冲计数
2016-04-25 19:02:54STM32F407捕捉外部脉冲计数 -
stmcubemx 脉冲计数_STM32CubeMX:ETR外部脉冲计数器
2020-12-24 22:47:59使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。芯片:STM32F103C8T6输出:PA0、PA12(TIM1_ETR)、USART1配置界面TIM1配置Period为计数溢出周期代码应用/* USER CODE BEGIN 2 */HAL_TIM_Base_...使用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函数中,直接调用值即可,好一顿找……
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
-
利用定时/计数器T1对外部脉冲进行计数
2020-11-16 18:21:26利用定时/计数器T1对外部脉冲进行计数,每记到10个脉冲,使P1.0接的LED灯取反一次(即前10个脉冲到后亮,后10个脉冲到后灭,反复循环)。利用定时/计数器T1对外部脉冲进行计数,每记到10个脉冲,使P1.0接的LED灯取反一次(即前10个脉冲到后亮,后10个脉冲到后灭,反复循环)。
-
STM32定时器使用(三)外部脉冲计数
2019-10-19 11:33:12外部脉冲计数的原理是定时器1设定外部触发,另一个定时器2内部单位时间定时功能,在定时器2的中断函数里,去取定时器1的计数器,然后将定时器1计数器归零,这里取得的计数器值就是在单位时间内捕获的脉冲数。...电机脉冲编码器的读取应用,可以测电机转速和位移。外部脉冲计数的原理是定时器1设定外部触发,另一个定时器2内部单位时间定时功能,在定时器2的中断函数里,去取定时器1的计数器,然后将定时器1计数器归零,这里取得的计数器值就是在单位时间内捕获的脉冲数。
频率: f = CNT1 / time2;
这里只配置定时器1外部触发模式,定时器2的定时功能在之前的写过,可以去参考;
这里的定时器1要进行引脚输入功能,使用通用定时器TIM2,而纯定时功能的定时器2我们用基本定时器TIM6
配置通用定时器TIM2
void TIM2_Cap_Init(void) //配置 TIM2_CH1_ETR 为外部脉冲计数 { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能TIM2时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0 清除之前设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 输入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA0 下拉 //初始化定时器2 TIM2 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //设定计数器自动重装值 TIM_TimeBaseStructure.TIM_Prescaler =0; //预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 TIM_ITRxExternalClockConfig(TIM2,TIM_TS_ETRF); //配置外部触发,否则不会计数 TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); TIM_SetCounter(TIM2, 0); TIM_Cmd(TIM2,ENABLE ); //使能定时器 }
单位时间定时器服务函数
void TIM6_IRQHandler(void) { if(TIM_GetITStatus(TIM6,TIM_IT_Update)!= RESET) //检查TIM6更新中断发生与否 { TIM_ClearITPendingBit(TIM6,TIM_IT_Update); //清除TIMx更新中断标志 CNT=TIM_GetCounter(TIM2); //读取单位时间内计数器计的CNT值 fq=CNT; //脉冲数 TIM_SetCounter(TIM2,0); } }
这是使用ETR引脚进行时钟计数的,下一篇则使用不同捕获功能进行计数;
参考:https://blog.csdn.net/qq_26093511/article/details/73909933
https://blog.csdn.net/u010650845/article/details/81781670 -
STM32F103 CubeMX:ETR外部脉冲计数器
2019-09-24 16:56:12使用TIM定时器ETR管脚对外部脉冲进行计数,用PA5模拟产生脉冲进行计数。 芯片:STM32F103RCT 输出:PA5、PA12(TIM1_ETR) CubeMX(版本5.2.1)的配置界面: 主函数代码 /** @brief The application entry ...1、配置方法
使用TIM1_ETR管脚对外部脉冲进行计数,用PA5模拟产生脉冲进行计数。
芯片:STM32F103RCT
输出:PA5、PA12(TIM1_ETR)
时钟:系统时钟配置为72M
操作:通过杜邦线将PA5连接到PA12(TIM1_ETR)
CubeMX(版本5.2.1)的配置界面:
2、主函数代码
/** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_TIM1_Init(); /* 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 */ //翻转引脚PA5 产生方波 /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); HAL_Delay(1000); } /* USER CODE END 3 */ }.
3、 现象
观察下图寄存器即可,成功实现外部计数器功能。在STM32F103开发板上成功实现。
也可以通过串口打印功能,通过串口助手观察CNT计数值。
本人第一次博客分享,不足之处请指出,有点帮助请鼓励!
-
T0用作频率发生器;T1采样外部脉冲
2019-09-11 16:14:24定时器T0用作频率发生器,输出2.5KHz、50%占空比的频率;定时器T1采样外部脉冲,计数到2500个脉冲则使LED灯取反。 -
STM32 定时器用于外部脉冲计数
2015-12-25 09:59:00STM32 定时器用于外部脉冲计数 第一步,设置GPIO GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_12;GPIO_InitStructure.GPIO_... -
STM32CubeMX:ETR外部脉冲计数器
2016-11-09 18:11:21使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。 芯片:STM32F103C8T6 输出:PA0、PA12(TIM1_ETR)、USART1 配置界面 TIM1配置 Period为计数溢出周期 代码应用 /* USER ... -
stm32zet6_pwm输出_外部脉冲计数pwm脉冲个数
2021-01-19 14:33:261、TIM1 输出pwm.频率为 1 K 。引脚用PA11。...2、TIM3 配置为外部时钟输入模式。引脚用PD2。使能中断。 3、将PD2 和 PA11 短接,主函数串口打印 pwm脉冲个数。 4、控制TIME1 pwm 输出 4个周期后 停止输出。 -
使用STM32F4定时器的ETR功能对外部脉冲进行计数
2020-04-19 11:51:11对于外部脉冲(方波)计数,通用的方法为捕获比较方式,由于项目对于脉冲的精度要求比较高,在快速搭建代码测试过后,发现该方法并不能满足需求,进而寻求计数更为精确的方法----ETR计数。 在测试ETR计数后,其精度... -
STM32 定时器用于外部脉冲计数(转)
2015-06-23 16:54:00源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的)。 STM32中的定时器有很多用法: (一)系统时钟(SysTick) 设置... -
TIM1 外部脉冲计数
2020-04-06 19:21:45void TIM1_init() { PC_DDR_DDR1 = 0; PC_CR1_C11 = 1; TIM1_CCMR1 = 0x9d; TIM1_CCER1 = 0x02; TIM1_SMCR = 0x57; TIM1_CR1 = 0x01; } -
STM32使用小记(外部脉冲计数/AD并口读数+DMA/使用STM32的DSP库实现FFT...)总
2020-04-18 16:34:37@ STM32使用总结记录----HAL库(外部脉冲计数/AD并口读数+DMA/使用STM32的DSP库实现FFT…) 目录 外部脉冲计数 AD并口数据的DMA读取 使用STM32自带的DSP库实现FFT STM32型号:STM32F405RGT (64PIN) 配置方案: 1、... -
stm32采集脉冲信号_外部脉冲实现ADC采样的问题 STM32f103VE
2020-12-20 19:32:25PA11接受脉冲信号,实现每一个上升沿AD采样一次,这里的脉冲我是用PA1发送的,脉冲信号正常我测过了,可是AD没有采集到数据,希望哪位高手帮忙看看,我的源码都在下面了。万分感谢!#include"stm32f10x.h"#define ... -
stm32通用定时器用做外部脉冲计数器的例程
2018-07-05 14:21:42原文: https://blog.csdn.net/sdutkqb/article/details/39100971最近几天要用到stm32对外部输入脉冲进行计数,很自然想到定时器,可是手上资料没有讲解stm32定时器如何用作外部计数器的,在网上找例程,也没找到几... -
利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示
2016-01-25 11:42:45利用单片机的定时方式0,实现外部脉冲宽度(在5到250ms)的测量。要求画出电路图。在线等 ;问题补充:写出程序,测量结果存储在R0中。;=================================================;做而论道对此题给出了答案:... -
使用TIMER计算外部脉冲个数方法
2019-07-30 14:01:18本例程介绍使用TIMER的寄存器实现最基本的定时功能,输入捕获,输入捕获模式可以用来测量脉冲宽度或者测量频率。AM335x开发板有8个32位通用定时器,DMTIMER1是用于操作系统(OS)毫秒定时器,用于操作系统时钟,... -
单片机测试外部脉冲
2012-07-26 22:57:54用的CPU: C8051F005, 需要测试外部脉冲的频率。 问题有二: 第一个: 单片机一般能够测的最大脉冲频率是多少呢? 第二个: 测试脉冲的 频率大家有啥好想法? -
STM32 定时器用于外部脉冲计数,修改版,解决3..4库对应的无响应外部脉冲的问题
2012-07-24 14:18:53void TIM1_Configuration(void) //只用一个外部脉冲端口 { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //配置TIMER1作为计数器 TIM_DeInit(TIM1); TIM_TimeBaseStructure.TIM_Period = 0...
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
4-文件管理
-
大数据生态与Spark
-
MySQL 高可用工具 DRBD 实战部署详解
-
ElasticSearch-7.11部署配套资源.rar
-
windows sdk_web7.1+pack_emd+tftb-0.2.zip
-
455. Assign Cookies (Easy)
-
CentOS-6.8-i386-minimal.iso映像文件
-
【布道者】Linux极速入门
-
emmet语法生成html
-
基于词内部结合度和边界自由度的新词发现
-
树莓派使用DHT11实现温度监测
-
Hive增加一列固定值
-
select下拉框option默认选中(php模板渲染)
-
实现 MySQL 读写分离的利器 mysql-proxy
-
编译orbslam2出现的error: ‘usleep’ was not declared in this scope usleep(3000);
-
龙芯生态应用开发基础:C语言精要
-
Facebook产品设计总监:设计B端产品的4项基本原则
-
个人站点:使用快速页面构建的个人网站-源码
-
快速方便的将文字转换成语音文件