初次使用STM32F103,请问TIM2做计数器该如何配置
发布网友
发布时间:2022-05-02 10:22
我来回答
共1个回答
热心网友
时间:2022-06-19 06:27
第一次使用STM32,定时器使用太复杂了,看了半天的库使用手册也没看懂,所以请各位路过的朋友帮忙。
我想用最简单的办法,就是在void SysTick_Handler(void)中计数到1秒(定时现已正常),然后读取TIM2的计数值,读完后清零,使其重新开始计数,不考虑溢出的问题,TIM2作脉冲计数器,脉冲信号连接到PA0引脚,就是TIM2的时钟输入引脚,经示波器测量信号正常,但就是不知道调用哪个函数读取计数值,如何清零。
配置代码如下,请帮我看看有没有错误:
// PA0配置为浮空输入,捕获脉冲信号
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOA, &GPIO_InitStructure);
// TIMER2 作为转速脉冲计数器初始化
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// TIM2 clock enable
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// 基础设置
TIM_TimeBaseStructure.TIM_Period = 0xffff; //计数值,0.5秒内的数据
TIM_TimeBaseStructure.TIM_Prescaler = 0; //预分频,此值+1为分频的除数
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_DIV2, TIM_ExtTRGPolarity_NonInverted, 0x0);
TIM_SelectInputTrigger(TIM2, TIM_TS_ETRF);
//使能预装载
TIM_ARRPreloadConfig(TIM2, ENABLE);
//预先清除所有中断位
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
//配置中断
// TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
// 允许TIM2定时器开始计数
TIM_Cmd(TIM2, ENABLE);
}
初次使用STM32F103,请问TIM2做计数器该如何配置
我想用最简单的办法,就是在void SysTick_Handler(void)中计数到1秒(定时现已正常),然后读取TIM2的计数值,读完后清零,使其重新开始计数,不考虑溢出的问题,TIM2作脉冲计数器,脉冲信号连接到PA0引脚,就是TIM2的时钟输入引脚,经示波器测量信号正常,但就是不知道调用哪个函数读取计数值,如何清零。
编码器的工作原理是怎样的?
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光...
stm32f103选择Tim2,PA3,那么修改占空比的时候修改ccr哪个寄存器呢_百度...
知识点:在 TIMx_CNT 计数的同时,TIMx_CNT 的计数值 X 会与比较寄存器 TIMx_CCR 预先存储的数值 A 进行比较。当脉冲计数器 TIMx_CNT 的数值 X 小于比较寄存器TIMx_CCR 的值 A 时,输出高电平(或低电平);相反地,当脉冲计数器的数值 X 大于或等于比较寄存器的值 A 时,输出低电平(或...
IO口模式
比如要使用 STM32F1 03VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。 如果要使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。 === 一、GPIO模式配置 1、输入/输...
请问用stm32f103VB 做定时器,想要修改输出引脚(比如将GPIOA.2改为GPI...
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);找到GPIOA.2对应的定时器编号,手册里可查,不一定是TIM2这里只是给你个例子 另一个结构体 TIM_OCInit(TIM2, & TIM_OCInitStructure);同上 你最好找个有注释的例程,网上很多,搜“stm32定时器”就行了,自己找找吧 ...
stm32f103微控制器不同类型的定时器有什么区别?
只有最基本的定时功能,。基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动 通用定时器(TIM2~TIM5)的主要功能:除了基本的定时器的功能外,还具有测量输入信号的脉冲长度( 输入捕获) 或者产生输出波形( 输出比较和PWM)高级定时器(TIM1,TIM8)的主要功能:高级...
stm32的gpio有哪几种工作模式
其它模块保持非使能状态。比如要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。如果要使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。
如何实现gpio口模式的配置?
\x0d\x0a\x0d\x0a(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。\x0d\x0a\x0d\x0a(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应...
如何实现gpio口模式的配置
\x0d\x0a\x0d\x0a(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。\x0d\x0a\x0d\x0a(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应...
GPIO的几个概念
其它模块保持非使能状态。比如要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。如果要使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。