目录
定时器函数
a) millis()
- 此函数返回自Launchpad板开始运行当前程序以来经过的毫秒数。
- 大约50天后,这个数字溢出(回滚到零)。
- millis返回的值是unsigned long int。
Example
无符号长时间- = millis()
b)micros()
- 此函数返回自Launchpad板开始运行当前程序以来经过的微秒数。
- 大约70分钟后,此数字溢出(回滚到零)。
- micros返回的值是unsigned long int。
Example
无符号长时间- = micros()
c)delay(value)
value
:暂停程序的毫秒数。- 此函数暂停程序指定的毫秒数。
d)delayMicroseconds(value)
value
:暂停程序的微秒数。- 此函数暂停程序指定的微秒数。
e)sleep(value)
value
:将微控制器发送到睡眠模式的毫秒数。- 此功能使微控制器进入睡眠模式达指定的毫秒数。它比使用delay()更好,因为它节省了功耗和时钟周期。
/* 定时器程序 */
unsigned long time_value;
/* Setup is run once at the start (Power-On or Reset) of sketch */
void setup()
{
pinMode(2, OUTPUT); /* Pin 2 is defined as Output */
Serial.begin(9600); /* opens serial port, sets data rate to 9600 bps */
}
/* Loop runs over and over after the startup function */
void loop()
{
digitalWrite(2, HIGH); /* Make pin 2 HIGH */
delay(2000); /* Wait for 2 seconds */
digitalWrite(2, LOW);
delayMicroseconds(100); /* Wait for 100 microseconds */
Serial.print("Time passed since power on in milliseconds:");
time_value = millis(); /* Read value of number of microseconds since program started executing */
Serial.println(time_value);
delay(2000);
Serial.print("Time passed since power on in microseconds:");
time_value = micros(); /* Read value of number of milliseconds since program started executing */
Serial.println(time_value);
sleep(1000); /* Put the controller in sleep for 1 seconds */
}
中断函数
a)interrupts()
- 该函数在被noInterrupts()禁用后重新启用中断。
b)noInterrupts()
- 此功能禁用中断。
- 可以使用interrupts()重新启用中断。
c)attachInterrupt(interrupt, ISR, mode)
interrupt
是要监视中断事件的引脚号。ISR
:发生中断事件时要调用的ISR。此函数必须不带参数,不返回任何内容。mode
:决定哪个事件应该导致中断。有4个选项可供选择。
i) LOW(MSP430和C2000不可用)
引脚为低电平时产生中断。
ii)CHANGE
每当引脚改变值时产生中断。
iii)RISING
引脚从低电平变为高电平时产生中断。
iv)FALLING
引脚从高电平变为低电平时产生的中断。