在线时间246 小时
UID252169
ST金币0
蝴蝶豆121
注册时间2016-10-24
版主
- 最后登录
- 2020-7-12
|
a0a.1 32b0c
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。
|
|