Nol.A SDK Library 26.11.2
For IoT System Software Development
Loading...
Searching...
No Matches
Timer Class Reference

Timer는 일정 시간 이후에 1회 실행될 작업, 매 일정 시간마다 실행될 작업 등을 위한 기능입니다. More...

#include <Timer.hpp>

Public Member Functions

bool startOneShot (uint32_t millis, bool interrupt=false)
 작업함수를 millis 밀리초 이후 1회 실행합니다.
bool startPeriodic (uint32_t millis, bool interrupt=false)
 작업함수를 매 millis 밀리초 주기로 반복하여 실행합니다.
bool startOneShotMicros (uint32_t micros, bool interrupt=false)
 작업함수를 micros 마이크로초 이후 1회 실행합니다.
bool startPeriodicMicros (uint32_t micros, bool interrupt=false)
 작업함수를 매 micros 마이크로초 주기로 반복하여 실행합니다.
void stop ()
 예약된, 혹은 측정 중인 Timer를 중단합니다.
void onFired (void(*func)(void *), void *args=nullptr)
 타이머 만료시 실행시킬 작업함수를 지정합니다.
void * getCallback ()
 콜백함수 포인터를 반환합니다.
void * getCallbackArg ()
 콜백함수 인자를 반환합니다.
void fire ()
 타이머에 지정된 작업함수를 바로 호출합니다.
bool isRunning ()
 Timer가 활성화된 상태인지 확인한다.
bool isOneShot (void)
 Timer가 1회성인지 확인합니다.
uint32_t getNow ()
 Timer에 저장된 시간을 마이크로초 단위로 반환합니다.
uint64_t getElapsedTicks ()
 Timer가 설정된 후 현재까지 지나간 시간을 하드웨어 카운터 값 그대로 반환합니다.
HardwareTimerTick_t getNowTicks ()
void debugPrintTo (Print &)
struct timeval getElapsedTime ()
 Timer가 설정된 후 현재까지 지나간 시간을 반환합니다.
struct timeval getRemainingTime ()
 Timer가 만료되기까지 남은 시간을 반환합니다.

Public Attributes

uint16_t numExpired

Detailed Description

Timer는 일정 시간 이후에 1회 실행될 작업, 매 일정 시간마다 실행될 작업 등을 위한 기능입니다.

Timer는 MCU에 내장된 하드웨어 타이머의 기능을 소프트웨어에서 사용하기 위한 API를 제공합니다.

Examples
atsamr21-xpro/Basic/main.cpp, atsamr21-xpro/LPP-Receiver/main.cpp, atsamr21-xpro/LPP-Sender/main.cpp, feather-m0/AMG88xx/main.cpp, feather-m0/AMG88xx_IoT.own/main.cpp, feather-m0/Basic/main.cpp, feather-m0/LoRaWAN/main.cpp, feather-m0/OLED-FeatherWing/main.cpp, feather-m0/UltimateGPS+OLED/main.cpp, nordic-nrf52-dk/BLEBeacon/main.cpp, nordic-nrf52-dk/Basic/main.cpp, nordic-nrf52-dk/LoRaWAN-Class-A/main.cpp, nordic-nrf52-dk/MMA8452Q-3-axis/main.cpp, nordic-nrf52-dk/SX1276-Tx/main.cpp, plm100s/Basic/main.cpp, plm100s/IPv6overLoRaWAN/main.cpp, plm100s/LoRaWAN-Class-A/main.cpp, plm100s/PLS100W-RS485-Listener/main.cpp, plm100s/PLS100W_AM1005-P-485/main.cpp, plm100s/PLS100W_HRXL-MaxSonar-WR/main.cpp, plm100s/PLS100W_SSD1306-I2C/main.cpp, plm100s/PLS100W_T9602-I2C/main.cpp, plm100s/PLS100W_TFmini-UART/main.cpp, plm100s/veml6030/main.cpp, plm150/AnalogRead/main.cpp, plm150/Basic/main.cpp, plm150/LoRaWAN-Class-A/main.cpp, plm150/OLED-Display_SSD1306-I2C/main.cpp, plm150/PLS100W_RD-WSD-M-02/main.cpp, plm150/Radio-Rx/main.cpp, plm150/Radio-Tx/main.cpp, plm150/TempHum-Sensor_HTU2x-I2C/main.cpp, rak3172/Basic/main.cpp, rak3172/I2C-SHTSensor/main.cpp, rak3172/RS485-Listener/main.cpp, rak3172/Radio-Tx/main.cpp, st-nucleo-f429zi/Basic/main.cpp, st-nucleo-f429zi/LoRaWAN/main.cpp, st-nucleo-f429zi/SX1276-Rx/main.cpp, st-nucleo-f429zi/SX1276-Tx/main.cpp, st-nucleo-l073rz/Basic/main.cpp, st-nucleo-l152re/Analog-Input/main.cpp, st-nucleo-l152re/Basic/main.cpp, st-nucleo-l152re/DACTest/main.cpp, st-nucleo-l152re/HX711-Scale/main.cpp, st-nucleo-l152re/I2C-AT30TSE758-Temperature-Sensor/main.cpp, st-nucleo-l152re/LPP-Sender/main.cpp, st-nucleo-l152re/LoRaWAN-Class-A/main.cpp, st-nucleo-l152re/SX1276-Rx/main.cpp, st-nucleo-l152re/SX1276-Tx/main.cpp, and st-nucleo-l152re/USB-CDC/main.cpp.

Member Function Documentation

◆ getNow()

uint32_t Timer::getNow ( )
inline

Timer에 저장된 시간을 마이크로초 단위로 반환합니다.

185 {
186 struct timeval elapsed = this->getElapsedTime();
187 return elapsed.tv_sec * 1000 + elapsed.tv_sec / 1000;
188 }
struct timeval getElapsedTime()
Timer가 설정된 후 현재까지 지나간 시간을 반환합니다.

◆ getNowTicks()

HardwareTimerTick_t Timer::getNowTicks ( )
inline
197 {
198 return this->getElapsedTicks();
199 }
uint64_t getElapsedTicks()
Timer가 설정된 후 현재까지 지나간 시간을 하드웨어 카운터 값 그대로 반환합니다.

◆ isOneShot()

bool Timer::isOneShot ( void )

Timer가 1회성인지 확인합니다.

Returns
작업함수를 1회만 호출하면 true 를, 반복적으로 호출하면 false 를 반환합니다.

◆ isRunning()

bool Timer::isRunning ( )

Timer가 활성화된 상태인지 확인한다.

Returns
현재 활성화된 상태면 true 를, 아니면 false 를 반환합니다.

◆ onFired()

void Timer::onFired ( void(* func )(void *),
void * args = nullptr )

타이머 만료시 실행시킬 작업함수를 지정합니다.

작업함수 func 는 args 인자와 함께 호출됩니다.

Parameters
func작업함수의 포인터
args작업함수의 인자로 호출될 파라미터
Examples
atsamr21-xpro/Basic/main.cpp, atsamr21-xpro/LPP-Receiver/main.cpp, atsamr21-xpro/LPP-Sender/main.cpp, feather-m0/AMG88xx/main.cpp, feather-m0/AMG88xx_IoT.own/main.cpp, feather-m0/Basic/main.cpp, feather-m0/LoRaWAN/main.cpp, feather-m0/OLED-FeatherWing/main.cpp, feather-m0/UltimateGPS+OLED/main.cpp, nordic-nrf52-dk/BLEBeacon/main.cpp, nordic-nrf52-dk/Basic/main.cpp, nordic-nrf52-dk/LoRaWAN-Class-A/main.cpp, nordic-nrf52-dk/MMA8452Q-3-axis/main.cpp, nordic-nrf52-dk/SX1276-Tx/main.cpp, plm100s/Basic/main.cpp, plm100s/IPv6overLoRaWAN/main.cpp, plm100s/LoRaWAN-Class-A/main.cpp, plm100s/PLS100W-RS485-Listener/main.cpp, plm100s/PLS100W_AM1005-P-485/main.cpp, plm100s/PLS100W_HRXL-MaxSonar-WR/main.cpp, plm100s/PLS100W_SSD1306-I2C/main.cpp, plm100s/PLS100W_T9602-I2C/main.cpp, plm100s/PLS100W_TFmini-UART/main.cpp, plm100s/veml6030/main.cpp, plm150/AnalogRead/main.cpp, plm150/Basic/main.cpp, plm150/LoRaWAN-Class-A/main.cpp, plm150/OLED-Display_SSD1306-I2C/main.cpp, plm150/PLS100W_RD-WSD-M-02/main.cpp, plm150/Radio-Rx/main.cpp, plm150/TempHum-Sensor_HTU2x-I2C/main.cpp, rak3172/Basic/main.cpp, rak3172/I2C-SHTSensor/main.cpp, rak3172/RS485-Listener/main.cpp, rak3172/Radio-Tx/main.cpp, st-nucleo-f429zi/Basic/main.cpp, st-nucleo-f429zi/LoRaWAN/main.cpp, st-nucleo-f429zi/SX1276-Rx/main.cpp, st-nucleo-f429zi/SX1276-Tx/main.cpp, st-nucleo-l073rz/Basic/main.cpp, st-nucleo-l152re/Analog-Input/main.cpp, st-nucleo-l152re/Basic/main.cpp, st-nucleo-l152re/DACTest/main.cpp, st-nucleo-l152re/HX711-Scale/main.cpp, st-nucleo-l152re/I2C-AT30TSE758-Temperature-Sensor/main.cpp, st-nucleo-l152re/LPP-Sender/main.cpp, st-nucleo-l152re/LoRaWAN-Class-A/main.cpp, st-nucleo-l152re/SX1276-Rx/main.cpp, st-nucleo-l152re/SX1276-Tx/main.cpp, and st-nucleo-l152re/USB-CDC/main.cpp.

◆ startOneShot()

bool Timer::startOneShot ( uint32_t millis,
bool interrupt = false )

작업함수를 millis 밀리초 이후 1회 실행합니다.

Parameters
millis작업을 실행하기 까지의 대기 시간(단위:밀리초). 최대 값은 4294967 밀리초입니다.
interrupttrue 이면, 작업을 실행할 때 interrupt 모드에서 바로 실행합니다. 현재 실행 중인 작업을 중단하고 해당 작업을 실행하므로 타이밍이 중요한 응용에서 사용할 수 있습니다. false 이면, 스케줄러에 작업을 등록하고 현재 실행 중인 작업이 완료된 후 실행합니다.
Returns
타이머 등록 성공 여부
Warning
인터럽트 모드에서는 다른 인터럽트의 실행이 불가능할 수도 있습니다. 따라서 인터럽트 모드를 사용하여 타이머를 실행할 경우, 시간이 오래걸리는 작업, I/O 등의 제어를 최소화하고 가능한 빨리 종료하여야 합니다.
Examples
atsamr21-xpro/LPP-Receiver/main.cpp, atsamr21-xpro/LPP-Sender/main.cpp, feather-m0/AMG88xx_IoT.own/main.cpp, feather-m0/LoRaWAN/main.cpp, feather-m0/UltimateGPS+OLED/main.cpp, nordic-nrf52-dk/BLEBeacon/main.cpp, nordic-nrf52-dk/LoRaWAN-Class-A/main.cpp, plm100s/Basic/main.cpp, plm100s/IPv6overLoRaWAN/main.cpp, plm100s/LoRaWAN-Class-A/main.cpp, plm100s/PLS100W-RS485-Listener/main.cpp, plm100s/PLS100W_AM1005-P-485/main.cpp, plm100s/PLS100W_HRXL-MaxSonar-WR/main.cpp, plm100s/PLS100W_SSD1306-I2C/main.cpp, plm100s/PLS100W_T9602-I2C/main.cpp, plm100s/PLS100W_TFmini-UART/main.cpp, plm100s/veml6030/main.cpp, plm150/LoRaWAN-Class-A/main.cpp, plm150/PLS100W_RD-WSD-M-02/main.cpp, rak3172/Basic/main.cpp, rak3172/RS485-Listener/main.cpp, rak3172/Radio-Tx/main.cpp, st-nucleo-f429zi/LoRaWAN/main.cpp, and st-nucleo-l152re/LoRaWAN-Class-A/main.cpp.

◆ startOneShotMicros()

bool Timer::startOneShotMicros ( uint32_t micros,
bool interrupt = false )

작업함수를 micros 마이크로초 이후 1회 실행합니다.

Parameters
micros작업을 실행하기 까지의 대기 시간(단위: 마이크로초). 최대 값은 4294967295 마이크로초 입니다.
interrupttrue 이면, 작업을 실행할 때 interrupt 모드에서 바로 실행합니다. 현재 실행 중인 작업을 중단하고 해당 작업을 실행하므로 타이밍이 중요한 응용에서 사용할 수 있습니다. false 이면, 스케줄러에 작업을 등록하고 현재 실행 중인 작업이 완료된 후 실행합니다.
Returns
타이머 등록 성공 여부
Warning
인터럽트 모드에서는 다른 인터럽트의 실행이 불가능할 수도 있습니다. 따라서 인터럽트 모드를 사용하여 타이머를 실행할 경우, 시간이 오래걸리는 작업, I/O 등의 제어를 최소화하고 가능한 빨리 종료하여야 합니다.

◆ startPeriodic()

bool Timer::startPeriodic ( uint32_t millis,
bool interrupt = false )

작업함수를 매 millis 밀리초 주기로 반복하여 실행합니다.

Parameters
millis작업을 실행할 주기(단위:밀리초). 최대 값은 4294967 밀리초입니다.
interrupttrue 이면, 작업을 실행할 때 interrupt 모드에서 바로 실행합니다. 현재 실행 중인 작업을 중단하고 해당 작업을 실행하므로 타이밍이 중요한 응용에서 사용할 수 있습니다. false 이면, 스케줄러에 작업을 등록하고 현재 실행 중인 작업이 완료된 후 실행합니다.
Returns
타이머 등록 성공 여부
Warning
인터럽트 모드에서는 다른 인터럽트의 실행이 불가능할 수도 있습니다. 따라서 인터럽트 모드를 사용하여 타이머를 실행할 경우, 시간이 오래걸리는 작업, I/O 등의 제어를 최소화하고 가능한 빨리 종료하여야 합니다.
Examples
atsamr21-xpro/Basic/main.cpp, atsamr21-xpro/LPP-Sender/main.cpp, feather-m0/AMG88xx/main.cpp, feather-m0/Basic/main.cpp, feather-m0/OLED-FeatherWing/main.cpp, nordic-nrf52-dk/BLEBeacon/main.cpp, nordic-nrf52-dk/Basic/main.cpp, nordic-nrf52-dk/MMA8452Q-3-axis/main.cpp, nordic-nrf52-dk/SX1276-Tx/main.cpp, plm100s/Basic/main.cpp, plm100s/PLS100W_AM1005-P-485/main.cpp, plm100s/PLS100W_HRXL-MaxSonar-WR/main.cpp, plm100s/PLS100W_SSD1306-I2C/main.cpp, plm100s/PLS100W_T9602-I2C/main.cpp, plm100s/PLS100W_TFmini-UART/main.cpp, plm100s/veml6030/main.cpp, plm150/AnalogRead/main.cpp, plm150/Basic/main.cpp, plm150/OLED-Display_SSD1306-I2C/main.cpp, plm150/TempHum-Sensor_HTU2x-I2C/main.cpp, rak3172/Basic/main.cpp, rak3172/I2C-SHTSensor/main.cpp, st-nucleo-f429zi/Basic/main.cpp, st-nucleo-f429zi/LoRaWAN/main.cpp, st-nucleo-f429zi/SX1276-Tx/main.cpp, st-nucleo-l073rz/Basic/main.cpp, st-nucleo-l152re/Analog-Input/main.cpp, st-nucleo-l152re/Basic/main.cpp, st-nucleo-l152re/DACTest/main.cpp, st-nucleo-l152re/HX711-Scale/main.cpp, st-nucleo-l152re/I2C-AT30TSE758-Temperature-Sensor/main.cpp, st-nucleo-l152re/LPP-Sender/main.cpp, st-nucleo-l152re/LoRaWAN-Class-A/main.cpp, st-nucleo-l152re/SX1276-Tx/main.cpp, and st-nucleo-l152re/USB-CDC/main.cpp.

◆ startPeriodicMicros()

bool Timer::startPeriodicMicros ( uint32_t micros,
bool interrupt = false )

작업함수를 매 micros 마이크로초 주기로 반복하여 실행합니다.

Parameters
micros작업을 실행할 주기(단위: 마이크로초). 최대 값은 4294967295 마이크로초 입니다.
interrupttrue 이면, 작업을 실행할 때 interrupt 모드에서 바로 실행합니다. 현재 실행 중인 작업을 중단하고 해당 작업을 실행하므로 타이밍이 중요한 응용에서 사용할 수 있습니다. false 이면, 스케줄러에 작업을 등록하고 현재 실행 중인 작업이 완료된 후 실행합니다.
Returns
타이머 등록 성공 여부
Warning
인터럽트 모드에서는 다른 인터럽트의 실행이 불가능할 수도 있습니다. 따라서 인터럽트 모드를 사용하여 타이머를 실행할 경우, 시간이 오래걸리는 작업, I/O 등의 제어를 최소화하고 가능한 빨리 종료하여야 합니다.

The documentation for this class was generated from the following file: