上升沿GPIO中断

4个职位/0个新职位
最后一篇文章
姆哈西科特
离线
最后一次见到:5年9个月前
已加入:2014-07-20 06:00
上升沿GPIO中断

你好,

我想计算GPIO引脚上的输入频率(输入频率约为50-150kHz)
我计划在上升沿使用GPIO中断,并对systick定时器进行计数以获得频率值。
但是,我无法从systick计时器获得正确的值,并且我不确定是否正确设置了GPIO中断

有人能帮我调试这个问题吗

一些乐趣()
{

//启动systick计时器
systick\u usec\u单位(假);
系统停止();
系统启动(90000,错误);
//启用GPIO
GPIO\ U重置IRQ(GPIO1\ U IRQn);
GPIO_EnableIRQ(GPIO_PORT_1,GPIO_PIN_1,GPIO1_IRQn,false,true,0);//要在上升沿信号上触发
GPIO_RegisterCallback(GPIO1_IRQn,app_btn_callback();
...
}

void app\u btn\u回调(void)
{
if(firstEdge==0)
{
firstEdge=1;
freqCount=SysTick->VAL;
}
其他的
{
freqCount=freqCount SysTick->VAL;
系统停止();
NVIC\u DisableIRQ(GPIO1\u IRQn);
}

NVIC\u ClearPendingIRQ(GPIO1\u IRQn);
}

设备:
MT\u对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2015-06-08 11:34
嗨mharthikote,

嗨mharthikote,

错误的值是什么意思?期望值的误差是什么?

您是否考虑过轮询GPIO并启动systick,而不是等待中断发生,看看会发生什么?

谢谢你的对话

姆哈西科特
离线
最后一次见到:5年9个月前
已加入:2014-07-20 06:00
我从中得到不正确的值

当输入频率大于100kHz时,我从systick定时器得到的值不正确….我是否正确设置了GPIO中断??

MT\u对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2015-06-08 11:34
嗨mharthikote

嗨mharthikote

似乎中断设置正确。

我认为不能正常工作的原因是你在使用中断,试试看查询pin码,看看会发生什么。

谢谢你的对话