void EXTI0_IRQHandler(void) //外部中断上升沿检测 { if(PALSE == 1) { delay circlesAns++; // 检测到上升沿,圈数累加1 while(PALSE); } if(circlesAns == 2){ if(timAns!=0){ speedCal = 10000/timAns/60; // r/min 连续两次检测到上升沿后,计算速度 // speed[ans] = speedCal; // tims[ans] = timAns; // ans++; }帮我改写这段程序,当检测到上升沿后,延时0.5s,如果此时仍为上升沿,则上升沿有效
时间: 2024-01-05 20:04:46 浏览: 48
以下是修改后的程序,可以实现你所描述的功能:
```C++
volatile int PULSE = 0; // 输入信号引脚
volatile int circlesAns = 0; // 圈数累加器
volatile unsigned long previousTime = 0; // 上升沿时间
void EXTI0_IRQHandler(void) { // 外部中断上升沿检测
if (PULSE == 1) {
previousTime = millis(); // 记录上升沿时间
delay(500); // 延时0.5s
if (PULSE == 1) { // 如果此时仍为上升沿
circlesAns++; // 上升沿有效,圈数累加1
while (PULSE);
}
}
if (circlesAns == 2){
if (timAns!=0){
float speedCal = 10000.0 / timAns / 60.0; // r/min 连续两次检测到上升沿后,计算速度
// speed[ans] = speedCal;
// tims[ans] = timAns;
// ans++;
}
}
}
```
这个程序在输入信号引脚检测到上升沿后,记录上升沿时间,并进行0.5s的延时。延时结束后,检查输入信号引脚的状态是否仍为高电平,如果是,则上升沿有效,圈数累加1。注意,中断服务函数需要在主程序中注册,并设置相应的中断优先级。同时,计算速度的部分需要修改为float类型。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)