在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
实验六 中断脉冲输入实验
如题,因此需要打开InteruptIn.h文本查看。实例中可以看到与实验五一样的需要定义1个对象,编1个中断函数,而后绑定这两者即可。首先在前部定义时钟对象后一行写:
InterruptIn plusIn28(P0_28);
定义P0_28位中断输入口。为了计数中断口的数值,定义一个16位的变量pj28,加在16位变量行中:
int16_t pj28;
之后在写中断函数:
void PlusIn28(void){wait(0.001f);if(P0_28) pj28++;}
前边的wait(0.001f)数值要小于输入的数值,本例打算用P0_27的100Hz信号输入,意即,中断产生后延时0.001秒P0_28还是高,pj28增加。
在main的循环语句前增加:
plusIn28.rise(&PlusIn28);
上升沿触发中断,执行中断函数PlusIn28。
为了显示结果,在dispBase中增加:
c2l(0,4,25);c2l(1,4,19);c2l(2,4,2);c2l(3,4,8);//PJ28
在dispMes中增加:
c2l(5,4,(pj28/100)%10);c2l(6,4,(pj28/10)%10);c2l(7,4,(pj28)%10);
显然ps28的数值超过3位就显示后3位了,可以增加的。
这也是中断执行的,主程序中没有语句。将P0_27与P0_28短路,下载运行结果见图61。
|
-
61-中断脉冲计数
|