Ryo Od
/
Nucleo_UsingAnRtosTimerInsideAClass_Test
RtosTimerをクラス内で使うテスト
main.cpp@1:747445d49c3d, 2016-05-30 (annotated)
- Committer:
- ryood
- Date:
- Mon May 30 10:58:42 2016 +0000
- Revision:
- 1:747445d49c3d
- Parent:
- 0:9bbbd58541be
- Child:
- 2:ff926e519980
RtosTimer??????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryood | 0:9bbbd58541be | 1 | #include "mbed.h" |
ryood | 0:9bbbd58541be | 2 | #include "rtos.h" |
ryood | 0:9bbbd58541be | 3 | |
ryood | 0:9bbbd58541be | 4 | class TestClass |
ryood | 0:9bbbd58541be | 5 | { |
ryood | 0:9bbbd58541be | 6 | public: |
ryood | 1:747445d49c3d | 7 | TestClass(uint32_t _updateTime) : updateTime(_updateTime), |
ryood | 1:747445d49c3d | 8 | timer(&TestClass::threadHelper, osTimerPeriodic, (void *)this) |
ryood | 0:9bbbd58541be | 9 | { |
ryood | 0:9bbbd58541be | 10 | //NOTE: The RTOS hasn't started yet, so we can't create the internal thread here |
ryood | 0:9bbbd58541be | 11 | } |
ryood | 0:9bbbd58541be | 12 | |
ryood | 0:9bbbd58541be | 13 | void run() { |
ryood | 1:747445d49c3d | 14 | timer.start(updateTime); |
ryood | 0:9bbbd58541be | 15 | } |
ryood | 0:9bbbd58541be | 16 | |
ryood | 0:9bbbd58541be | 17 | void stop() { |
ryood | 1:747445d49c3d | 18 | timer.stop(); |
ryood | 0:9bbbd58541be | 19 | } |
ryood | 0:9bbbd58541be | 20 | |
ryood | 0:9bbbd58541be | 21 | private: |
ryood | 0:9bbbd58541be | 22 | uint32_t updateTime; |
ryood | 1:747445d49c3d | 23 | RtosTimer timer; |
ryood | 0:9bbbd58541be | 24 | |
ryood | 0:9bbbd58541be | 25 | static void threadHelper(const void* arg) { |
ryood | 0:9bbbd58541be | 26 | printf("In threadHelper()\r\n"); |
ryood | 0:9bbbd58541be | 27 | |
ryood | 0:9bbbd58541be | 28 | //Cast the argument to a TestClass instance pointer |
ryood | 0:9bbbd58541be | 29 | TestClass* instance = (TestClass*)arg; |
ryood | 0:9bbbd58541be | 30 | |
ryood | 0:9bbbd58541be | 31 | //Call the thread method for the TestClass instance |
ryood | 0:9bbbd58541be | 32 | instance ->threadMethod(); |
ryood | 0:9bbbd58541be | 33 | } |
ryood | 0:9bbbd58541be | 34 | |
ryood | 0:9bbbd58541be | 35 | void threadMethod() { |
ryood | 0:9bbbd58541be | 36 | printf("In threadMethod()\r\n"); |
ryood | 0:9bbbd58541be | 37 | } |
ryood | 0:9bbbd58541be | 38 | }; |
ryood | 0:9bbbd58541be | 39 | |
ryood | 0:9bbbd58541be | 40 | int main() |
ryood | 0:9bbbd58541be | 41 | { |
ryood | 0:9bbbd58541be | 42 | printf("\n\n\r** Using An RtosTimer inside a class test **\r\n"); |
ryood | 0:9bbbd58541be | 43 | |
ryood | 0:9bbbd58541be | 44 | while (true) { |
ryood | 0:9bbbd58541be | 45 | printf("In main loop\r\n"); |
ryood | 0:9bbbd58541be | 46 | TestClass test(1000); |
ryood | 0:9bbbd58541be | 47 | test.run(); |
ryood | 0:9bbbd58541be | 48 | Thread::wait(10000); |
ryood | 0:9bbbd58541be | 49 | test.stop(); |
ryood | 0:9bbbd58541be | 50 | } |
ryood | 0:9bbbd58541be | 51 | } |