专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
分享:STM32 TIM5 输入捕获PWM周期频率,欢迎拍砖
2019-12-24 18:39
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
9009
9
9
之前搜索坛里,发现没有STM32输入捕获测量频率的程序,要么就是未解决的帖子。
经过一段时间琢磨,了解了定时器中断触发的原理,根据原子哥的测高电平脉宽的程序,修改了一下,
主要功能就是定时器输入捕获方波的周期,然后通过串口打印信息。
现整理好了工程,上传上来,通过串口显示出来,希望高手拍砖。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
weshare
2019-12-25 17:07
ahong2hao 发表于 2015-3-28 09:21
定时器的从模式reset该如何配置,能给个参考吗?
void Tmr3_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TmrBaseInitStructure;
TIM_ICInitTypeDef TIM_ICInitStruct;
Tmr3_GPIO_Config();
/* 开启定时器3的时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
/* 为定时器3设置内部时钟为计数源 */
TIM_InternalClockConfig(TIM3);
/* 定时器设置为向上计数模式 */
TIM_TmrBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
/* 定时器的周期设置 */
TIM_TmrBaseInitStructure.TIM_Period = 10000-1;
/* 分频系数为7200 */
TIM_TmrBaseInitStructure.TIM_Prescaler = 7200-1;
/* fDTS的分频系数 */
TIM_TmrBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
/* 设置定时器3时基 */
TIM_TimeBaseInit(TIM3,&TIM_TmrBaseInitStructure);
TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);
/* 设置通道1为输入通道 */
TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;
/* 关闭滤波器 */
TIM_ICInitStruct.TIM_ICFilter = 0x0;
/* 设置触发源为上升沿 */
TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Falling;
/* 触发源分频系数为1 */
TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;
/* 选择通道1为触发源 */
TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;
/* 设置定时器3通道1为输入 */
TIM_ICInit(TIM3,&TIM_ICInitStruct);
/* 设置通道2为输入通道 */
TIM_ICInitStruct.TIM_Channel = TIM_Channel_2;
/* 关闭滤波器 */
// TIM_ICInitStruct.TIM_ICFilter = 0x4; //不用进行设置
/* 设置触发源为上升沿 */
TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising ;
/* 触发源分频系数为1 */
TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;
/* 选择通道1为触发源 */
TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_IndirectTI;
/* 设置定时器3通道1为输入 */
TIM_ICInit(TIM3,&TIM_ICInitStruct);
/* 重置模式设置通道2为触发源 */
TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);
/* 配置定时器通道2的中断 */
TIM_ITConfig(TIM3,TIM_IT_CC2,ENABLE);
/* 开启定时器3 */
TIM_Cmd(TIM3,ENABLE);
}
复制代码
加载中...
查看其它9个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- void Tmr3_Config(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TmrBaseInitStructure;
- TIM_ICInitTypeDef TIM_ICInitStruct;
-
- Tmr3_GPIO_Config();
-
- /* 开启定时器3的时钟 */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
-
- /* 为定时器3设置内部时钟为计数源 */
- TIM_InternalClockConfig(TIM3);
-
- /* 定时器设置为向上计数模式 */
- TIM_TmrBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
- /* 定时器的周期设置 */
- TIM_TmrBaseInitStructure.TIM_Period = 10000-1;
- /* 分频系数为7200 */
- TIM_TmrBaseInitStructure.TIM_Prescaler = 7200-1;
- /* fDTS的分频系数 */
- TIM_TmrBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- /* 设置定时器3时基 */
- TIM_TimeBaseInit(TIM3,&TIM_TmrBaseInitStructure);
-
- TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);
-
- /* 设置通道1为输入通道 */
- TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;
- /* 关闭滤波器 */
- TIM_ICInitStruct.TIM_ICFilter = 0x0;
- /* 设置触发源为上升沿 */
- TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Falling;
- /* 触发源分频系数为1 */
- TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;
- /* 选择通道1为触发源 */
- TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;
- /* 设置定时器3通道1为输入 */
- TIM_ICInit(TIM3,&TIM_ICInitStruct);
-
- /* 设置通道2为输入通道 */
- TIM_ICInitStruct.TIM_Channel = TIM_Channel_2;
- /* 关闭滤波器 */
- // TIM_ICInitStruct.TIM_ICFilter = 0x4; //不用进行设置
- /* 设置触发源为上升沿 */
- TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising ;
- /* 触发源分频系数为1 */
- TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;
- /* 选择通道1为触发源 */
- TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_IndirectTI;
- /* 设置定时器3通道1为输入 */
- TIM_ICInit(TIM3,&TIM_ICInitStruct);
-
- /* 重置模式设置通道2为触发源 */
- TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);
- /* 配置定时器通道2的中断 */
- TIM_ITConfig(TIM3,TIM_IT_CC2,ENABLE);
- /* 开启定时器3 */
- TIM_Cmd(TIM3,ENABLE);
- }
复制代码一周热门 更多>