你好,
我想在GPIO引脚上计算输入频率(输入Fre 50-150kHz)
我计划在上升沿使用GPIO中断,并计算Systick计时器以获得频率值。
但是,我无法从Systick计时器获得正确的价值,我不确定我是否正确地设置了GPIO中断
有人可以帮助我调试这个问题
一些乐趣()
{
//开始Systick Timer
systick_usec_units(false);
systick_stop();
systick_start(90000,false);
//启用GPIO.
gpio_resetirq(gpio1_irqn);
gpio_enableirq(gpio_port_1,gpio_pin_1,gpio1_irqn,false,true,0);//想要触发上升沿信号
gpio_registercallback(gpio1_irqn,app_btn_callback();
......
}
void app_btn_callback(void)
{
if(firstedge == 0)
{
Firstedge = 1;
freqcount = systick-> val;
}
别的
{
freqcount = freqcount-systick-> val;
systick_stop();
nvic_disableirq(gpio1_irqn);
}
nvic_clearpendingirq(gpio1_irqn);
}
设备:
嗨mharthikote,
您是什么意思错误值,您期待的值是什么?
您是否考虑调查GPIO并启动Systick而不是等待中断发生,看看会发生什么?
谢谢mt_dialog.
我从Systick计时器获取不正确的值,用于输入频率大于100khz ....我可以正确地设置GPIO中断吗?
嗨mharthikote.
似乎中断被正确设置。
我认为虽然无法正常工作的原因是您使用中断的事实,请尝试投票引脚并查看会发生什么。
谢谢mt_dialog.