Timer属于MCU中作为内外部时间基准的模块,可以完成定时、计数等周期或与时间相关的事件。F412有14个Timer,我们只用其中的1个完成本次实验。本次实验完成计数功能——将原来的cnt程序计数器,放在Timer程序中,由时钟程序自动完成cnt增加的过程。 打开Ticker.h,可以看到例子如下: * Ticker timer;//定义时间对象 * DigitalOut led1(LED1); * DigitalOut led2(LED2); * * int flip = 0; * * void attime() {//时间中断函数 * flip = !flip; * } * * int main() { * timer.attach(&attime, 5);//时间对象绑定时间类,5秒1次 * while(1) { * if(flip == 0) { * led1 = !led1; * } else { * led2 = !led2; * } * wait(0.2); * } * } 在定义对象的下边增加一行: Ticker myTime; 在main主函数之前编写一个时钟中断函数: void mytime(){cnt++;} 在主函数main中加入一行: myTime.attach(*mytime,0.1f);//0.1S计数增加1 将主函数main中的while循环体中的cnt++;一行删除或注释掉://cnt++; 在循环体中已经没有时钟函数,也没有cnt的计数语句,因为时钟是系统内部中断完成的。编译下载后的结果如照片91。 |