zhjb1 发表于 2017-3-30 18:00:00

[NUCLEO-F412ZG试用体验] 九、Timer实验

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。

页: [1]
查看完整版本: [NUCLEO-F412ZG试用体验] 九、Timer实验