资源简介
STM32利用输入捕获模式测量频率,利用上升沿和下降沿的差值
代码片段和文件信息
/***************
利用定时器TIM1的CH2捕获通道测量外部输入信号频率(根据引脚,决定所使用的TIMx寄存器)
定时器TIM1设为输入捕获模式,外部信号从通道CH2进入,并相应串口设为浮空输入,
高电平有效,在捕获中断中计算2次捕获值的差值,从而计算信号频率
*******************/
#include “stm32f10x.h“
#include “stm32f10x_tim.h“
void RCC_Configuration(void);
void NVIC_Configuration(void);
void GPIO_Configuration(void);
float TIM1_FREQ;
int main(void)
{
/* System Clocks Configuration */
RCC_Configuration();
//SysTick_Configuration();
/* NVIC configuration */
NVIC_Configuration();
/* Configure the GPIO ports */
GPIO_Configuration();
// TIM_Configuration( );//TIM初始化函数
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //选择通道2
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //输入上升沿捕获
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; // 通道方向选择(相位)
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //每次检测到捕获输入就触发一次捕获
//(预分频系数)
TIM_ICInitStructure.TIM_ICFilter = 0x0; //滤波系数
TIM_ICInit(TIM1 &TIM_ICInitStructure);
TIM_ITConfig(TIM1 TIM_IT_CC2 ENABLE); //打开中断
TIM_Cmd(TIM1 ENABLE); //启动TIM1
while(1);
Tim1_SetupNVIC();
}
void RCC_Configuration(void)
{
/* TIM1 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM1 ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE);
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the TIM1 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void GPIO_Configuration(void)
{
/* TIM1 channel 2 pin (PA.06) configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC &GPIO_InitStructure);
}
/***********中断配置*************/
void Tim1_SetupNVIC(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM 0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH 0x0);
#endif
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/************中断里面做的事情**************/
void TIM1_IRQHandler(void)// 用相应的定时器中断
{
if (TIM_GetITStatus(TIM1 TIM_IT_CC2) != RESET)//是TIM1CH2
{
TIM_ClearITPendingBit(TIM1 TIM_IT_CC2);//清空捕获标志
//第一次捕获
if(capture_number==0 )
{
Ic1_readvalue1 = TIM_GetCapture2(TIM1);//保留捕获值
capture_number=1;//设置标志
}
//第二次捕获
else if(capture_number==1)
{
Ic1_readvalue2 = TIM_GetCapture2(TIM1);//保留捕获值
}
//若脉宽较长时,定时器可能溢出,需对溢出进行处理
//考虑是否溢出,计算两次的差值
if(Ic1_readvalue1>Ic1_readval
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-02-03 10:36 输入捕获模式测量频率\
文件 3509 2015-02-03 10:36 输入捕获模式测量频率\capture_frequency.c
目录 0 2015-01-26 19:57 输入捕获模式测量频率\参考一\
目录 0 2015-02-02 15:22 输入捕获模式测量频率\参考一\PWM_Input\
目录 0 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\Debug\
文件 33792 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\Debug\vc60.idb
文件 28672 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\Debug\vc60.pdb
文件 7486 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\main.c
文件 3375 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\main.dsp
文件 516 2015-02-02 15:22 输入捕获模式测量频率\参考一\PWM_Input\main.dsw
文件 33792 2015-02-02 15:22 输入捕获模式测量频率\参考一\PWM_Input\main.ncb
文件 48640 2015-02-02 15:22 输入捕获模式测量频率\参考一\PWM_Input\main.opt
文件 886 2015-02-02 15:07 输入捕获模式测量频率\参考一\PWM_Input\main.plg
文件 2781 2009-05-07 14:50 输入捕获模式测量频率\参考一\PWM_Input\readme.txt
文件 6305 2009-05-07 14:50 输入捕获模式测量频率\参考一\PWM_Input\stm32f10x_conf.h
文件 29566 2009-05-07 14:50 输入捕获模式测量频率\参考一\PWM_Input\stm32f10x_it.c
文件 3842 2009-05-07 14:50 输入捕获模式测量频率\参考一\PWM_Input\stm32f10x_it.h
文件 2703 2015-02-02 15:49 输入捕获模式测量频率\参考三定时器输入捕获.txt
文件 3413 2015-02-02 15:22 输入捕获模式测量频率\参考二.c
- 上一篇:ltc1860 ad程序
- 下一篇:数据挖掘与机器学习.pdf
相关资源
- 频率计vhdl代码,采用max plus II
- 简易频率计数器,七分频的,四位显
- 基于FPGA的数字频率计设计与仿真
- 51单片机频率计-六位数码管显示-汇编
- 声卡测试音频-正弦波-各种频率
- 论文研究 - 大学生肌肉骨骼疼痛的发
- 专有的高性能无线电力传输
- 论文研究 - 非洲黑人类风湿关节炎患
- AD7616,1kHz采集频率,突发序列器模式
- 论文研究 - Chenab河的洪水频率分析,
- ios 声像图 波形和频谱.zip
- 论文研究 - 喀土穆州帕金森氏病患者
- 通过STM32F103单片机通用定时器TIM3同时
- 通过STM32F103单片机高级定时器TIM1同时
- 数字频率计
- 用51单片机实现可调频率和占空比PW
- AT89C51+DAC0832+LM324做的信号发生器包含
- 简易信号发生器proteus仿真频率、幅度
- 基于步进频率波形的穿墙雷达目标定
- stm32f103c8t6频率计.zip
- wifi密码弱口令字典(使用频率最高)
- wifi密码破解必备 6000个使用频率最高
- 常用WIFI密码字典(高频率)
- S7-1200与三菱D700modbus通讯读取频率写频
- msp430产生频率、占空比可调PWM信号
- 51单片机数码管显示0-9999Hz频率计
- 小流域推理公式计算设计频率的洪水
- verilog写的频率计源程序
- 50hz-7mhz的频率计
- 基于FPGA的数字频率计设计
评论
共有 条评论