OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6853|回复: 2

求各位大神帮忙看看,我想用F4来测量通过声音传感器进入单片机的声音的频率(不精确),但是出现了问题

[复制链接]

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-12-18
在线时间
4 小时
发表于 2015-12-18 21:52:23 | 显示全部楼层 |阅读模式
5金钱
这是我的main函数代码,我用的定时器3定时0.5s,用的定时器5的频道1做捕获。(声音传感器的AO输出端接在PA0,也就是定时器5的频道1)
[mw_shl_code=c,true]#include "sys.h" #include "led.h" #include "timer.h" #include "delay.h" extern u16 flag,f,i; int main(void) { delay_init(168); LED_Init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); TIM3_Int_Init(5000-1,8400-1); TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1); while(1) { if(flag==1) { //LED1=0; TIM_Cmd(TIM3,DISABLE); TIM_Cmd(TIM5,DISABLE); //LED1=0; if(i==0) { LED0=0; delay_ms(200); }else LED0=1; //LED1=0; flag=0; i=0; TIM3_Int_Init(5000-1,8400-1); TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1); } } } [/mw_shl_code]
timer.c的代码
[mw_shl_code=c,true]#include "timer.h" #include "led.h" u16 flag,i=0,f; void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); TIM_TimeBaseInitStructure.TIM_Period = arr; TIM_TimeBaseInitStructure.TIM_Prescaler=psc; TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_Cmd(TIM3,ENABLE); NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); } void TIM3_IRQHandler(void) { if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) { flag=1; } TIM_ClearITPendingBit(TIM3,TIM_IT_Update); } TIM_ICInitTypeDef TIM5_ICInitStructure; void TIM5_CH1_Cap_Init(u32 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); TIM_TimeBaseStructure.TIM_Prescaler=psc; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period=arr; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure); TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM5_ICInitStructure.TIM_ICFilter = 0x00; TIM_ICInit(TIM5, &TIM5_ICInitStructure); TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE); TIM_Cmd(TIM5,ENABLE ); NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2; NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } u8 TIM5CH1_CAPTURE_STA=0; void TIM5_IRQHandler(void) { if(TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET) { LED1=0; i++; }else TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); } [/mw_shl_code]
这里我设置TIM5进入捕获中断后变量i自加(i初始为0),捕获中断设置为上升沿捕获,也就是说0.5s内,检测到的上升沿次数乘以2就是声音的频率f(不精确)
,我设置当f>1时,DS0亮。
这里我用DS1做测试用,把它放在TIM5的中断里面,问题在于,代码烧进去后,给声音传感器一个声音,DS1亮了,应该说明进入了TIM5的捕获中断了吧,但是
DS0却不会亮。进入TIM5中断,说明i进行了自加,但是主函数里f的值却始终为0(我试过将条件设置为f==0,DS0亮了。。。)
求助~~各位大神帮忙看看。。。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-12-19 13:53:35 | 显示全部楼层
回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-12-18
在线时间
4 小时
 楼主| 发表于 2015-12-19 19:17:00 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥求帮助X﹏X
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 21:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表