“计时器”的版本间的差异
502748957@qq.com(讨论 | 贡献) (创建页面,内容为“{| style="width: 800px;" |- | <p style="color: #4F4E4E;font-size:220%">'''Module_RTC库-计时器示例'''</p> <br> 在下面的示例中,将使用按键类传感…”) |
502748957@qq.com(讨论 | 贡献) |
||
第90行: | 第90行: | ||
</source> | </source> | ||
− | + | 该程序使用D2接口作为外部中断,间隔一秒打印当前时间,按下触摸开关串口打印"blink!"作为计时器使用。 | |
<br> | <br> | ||
|} | |} | ||
[[MCookie-RTC Reference | 返回RTC库语法手册]] | [[MCookie-RTC Reference | 返回RTC库语法手册]] |
2018年5月16日 (三) 09:18的版本
Module_RTC库-计时器示例
所需硬件
电路搭建 将Battery、Core、MCookie_RTC、MCookie-Hub堆叠在一起,将触摸传感器插在D2/D3接口
代码 #include <Microduino_RTC.h>
RTC rtc;
/* 设置RTC启动时间
* 年, 月, 星期, 日, 时, 分, 秒 */
DateTime dateTime = {2016, 6, 3, 1, 15, 30, 40};
//中断标志位
volatile uint8_t timerFlag=0;
uint32_t timer=millis();
//中断函数
void blink(){
timerFlag=1;
}
void setup()
{
pinMode(2, INPUT); // 设置中断引脚
Serial.begin(9600);
//清除所有寄存器
rtc.begin();
rtc.clearAll();
rtc.setDateTime(dateTime);
//设置定时器频率 TIM_1_60HZ/TIM_1HZ/TIM_64HZ/TIM_4096HZ
rtc.setTimerFreq(TIM_1HZ);
//设置定时器计数值 定时器计时时间 = 计数值/定时器频率
rtc.setTimerCnt(2);
rtc.enableTimerInt();
Serial.println("debug set timer");
//设置外部中断,中断号0, 下降沿触发
attachInterrupt(0, blink, FALLING);
}
void loop()
{
if(millis()-timer>1000)
{
//打印当前时间
rtc.getDateTime(&dateTime);
Serial.print(dateTime.year);
Serial.print("/");
Serial.print(dateTime.month);
Serial.print("/");
Serial.print(dateTime.day);
Serial.print(" ");
Serial.print(dateTime.hour);
Serial.print(":");
Serial.print(dateTime.minute);
Serial.print(":");
Serial.print(dateTime.second);
Serial.print("\r\n");
timer=millis();
}
if (timerFlag==1){
Serial.print("blink!\r\n");
//清除中断
rtc.clearTimerInt();
detachInterrupt(0);
timerFlag=0;
attachInterrupt(0, blink, FALLING);
}
}
该程序使用D2接口作为外部中断,间隔一秒打印当前时间,按下触摸开关串口打印"blink!"作为计时器使用。
|