// Ð šÐ ¾Ð »Ð ¸Ð ¡‡Ð µÐ ¡�Ð ¡‚Ð ²Ð ¾ 8-Ð ¡€Ð °Ð ·Ð ¡€Ð ¡�Ð ´Ð ½Ð ¡‹Ð ¡… Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€Ð ¾Ð ² #define OS_TIMERS8 5 // Ð šÐ ¾Ð »Ð ¸Ð ¡‡Ð µÐ ¡�Ð ¡‚Ð ²Ð ¾ 16-Ð ¡€Ð °Ð ·Ð ¡€Ð ¡�Ð ´Ð ½Ð ¡‹Ð ¡… Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€Ð ¾Ð ² #define OS_TIMERS16 2 // Ð šÐ ¾Ð »Ð ¸Ð ¡‡Ð µÐ ¡�Ð ¡‚Ð ²Ð ¾ 24-Ð ¡€Ð °Ð ·Ð ¡€Ð ¡�Ð ´Ð ½Ð ¡‹Ð ¡… Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€Ð ¾Ð ² #define OS_TIMERS24 0 // Ð šÐ ¾Ð »Ð ¸Ð ¡‡Ð µÐ ¡�Ð ¡‚Ð ²Ð ¾ 32-Ð ¡€Ð °Ð ·Ð ¡€Ð ¡�Ð ´Ð ½Ð ¡‹Ð ¡… Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€Ð ¾Ð ² #define OS_TIMERS32 1
ID
ID
enum OSA_TIMERS_ENUM { // 8-Ð ±Ð ¸Ð ¡‚Ð ½Ð ¡‹Ð µ T8_TIMER0, T8_TIMER1, T8_TIMER2, T8_TIMER3, T8_TIMER4, // 16-Ð ±Ð ¸Ð ¡‚Ð ½Ð ¡‹Ð µ T16_TIMER0, T16_TIMER1, // 24-Ð ±Ð ¸Ð ¡‚Ð ½Ð ¡‹Ð µ // 32-Ð ±Ð ¸Ð ¡‚Ð ½Ð ¡‹Ð µ T32_TIMER0 };
// Ð žÐ Ð ¡€Ð µÐ ´Ð µÐ »Ð µÐ ½Ð ¸Ð ¡� Ð ² OAScfg.h #define OS_ENABLE_TIMER #define OS_TIMERS8 1 enum OS_TIMERS_ENUM { T8_Timer // Ð ¢Ð °Ð ¹Ð ¼Ð µÐ ¡€ Ð ´Ð »Ð ¡� Ð ²Ð ¡‹Ð ´Ð µÐ »Ð µÐ ½Ð ¸Ð ¡� Ð ºÐ ²Ð °Ð ½Ð ¡‚Ð ° Ð ²Ð ¡€Ð µÐ ¼Ð µÐ ½Ð ¸ Ð ·Ð °Ð ´Ð °Ð ¡‡Ð µ Ð Ð ¾Ð ¸Ð ¡�Ð ºÐ ° } ---------------------------------------------------------------------- // Ð ¤Ð ¡€Ð °Ð ³Ð ¼Ð µÐ ½Ð ¡‚ Ð Ð ¡€Ð ¾Ð ³Ð ¡€Ð °Ð ¼Ð ¼Ð ¡‹ (Ð Ð ¡€Ð µÐ ´Ð Ð ¾Ð »Ð °Ð ³Ð °Ð µÐ ¼, Ð ¡‡Ð ¡‚Ð ¾ Ð ¸Ð ½Ð ¡‚Ð µÐ ¡€Ð ²Ð °Ð » OS_Timer = 1 ms) OST_MSG msg_cb, msg_cb2; void Task1 (void) { OST_MSG msg; static unsigned long Data; for (;;) { ... OS_Msg_Send(msg_cb, (OST_MSG)&Data); // Ð �Ð ¡ƒÐ ¶Ð ½Ð ¾ Ð ½Ð °Ð ¹Ð ¡‚Ð ¸ Ð ´Ð °Ð ½Ð ½Ð ¡‹Ð µ Data OS_Msg_Wait(msg_cb2, msg); // Ð –Ð ´Ð µÐ ¼ Ð ·Ð °Ð ²Ð µÐ ¡€Ð ¡ˆÐ µÐ ½Ð ¸Ð ¡� Ð Ð ¾Ð ¸Ð ¡�Ð ºÐ ° ... } } void Task_SearchData (void) { OST_SMSG msg; static unsigned long Data; static unsigned long Addr; for (;;) { OS_Msg_Wait(msg_cb, msg); Data = (unsigned long)(*msg); OS_RunTimer(T8_Timer, 10); // Ð —Ð °Ð Ð ¡ƒÐ ¡�Ð ¡‚Ð ¸Ð ¡‚Ð ¡Œ Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€ Ð ½Ð ° 10 Ð ¼Ð ¡� for (Addr = 0; Addr < MAX_ADDRESS; Addr++) { if (MemoryRead(Addr) == Data) { // Ð •Ð ¡�Ð »Ð ¸ Ð ½Ð °Ð ¡ˆÐ »Ð ¸ Ð ½Ð ¡ƒÐ ¶Ð ½Ð ¡‹Ð µ Ð ´Ð °Ð ½Ð ½Ð ¡‹Ð µ, OS_Msg_Send(msg_cb2, (OST_MSG)&Addr); // Ð ¾Ð ¡‚Ð Ð ¡€Ð °Ð ²Ð ¸Ð ¡‚Ð ¡Œ Ð ¡�Ð ¾Ð ¾Ð ±Ð ¡‰Ð µÐ ½Ð ¸Ð µ Ð ¸ Ð ²Ð ¡‹Ð ¹Ð ¡‚Ð ¸ Ð ¸Ð · Ð ¡†Ð ¸Ð ºÐ »Ð ° break; } if (OS_Oldtimer_Check(T8_Timer)) { // Ð ¢Ð °Ð ¹Ð ¼Ð µÐ ¡€ Ð Ð µÐ ¡€Ð µÐ Ð ¾Ð »Ð ½Ð ¸Ð »Ð ¡�Ð ¡�? OS_Yield(); // Ð ŸÐ µÐ ¡€Ð µÐ ´Ð °Ð ¡‚Ð ¡Œ Ð ¡ƒÐ Ð ¡€Ð °Ð ²Ð »Ð µÐ ½Ð ¸Ð µ Ð Ð »Ð °Ð ½Ð ¸Ð ¡€Ð ¾Ð ²Ð ¡‰Ð ¸Ð ºÐ ¡ƒ OS_RunTimer(T8_Timer, 10); // Ð —Ð °Ð Ð ¡ƒÐ ¡�Ð ¡‚Ð ¸Ð ¡‚Ð ¡Œ Ð ¡‚Ð °Ð ¹Ð ¼Ð µÐ ¡€ Ð ¡�Ð ½Ð ¾Ð ²Ð ° } } if (Addr == MAX_ADDRESS) { // Ð •Ð ¡�Ð »Ð ¸ Ð ½Ð µ Ð ½Ð °Ð ¡ˆÐ »Ð ¸ Ð ´Ð °Ð ½Ð ½Ð ¡‹Ð ¡… Addr = 0xFFFFFFFF; OS_Msg_Send(msg_cb2, (OST_MSG)&Addr); // Ð žÐ ¡‚Ð Ð ¡€Ð °Ð ²Ð »Ð ¡�Ð µÐ ¼ -1 } } }
msg_cbTask_Search
| OS_Timer | ||||
|---|---|---|---|---|
| 1 ms | ||||
| 10 ms | ||||
| 18.2 ms | ||||
| 256 us | ||||
| 512 us | ||||
| 1024 us | ||||
| 2048 us | ||||
| 4096 us | ||||
| 8192 us |
| OS_Oldtimer_Run8 (timer8_id, time) | appendix | |
| OS_Oldtimer_Run16 (timer16_id, time) | appendix | |
| OS_Oldtimer_Run24 (timer24_id, time) | appendix | |
| OS_Oldtimer_Run32 (timer32_id, time) | appendix | |
| OS_Oldtimer_Stop (timer_id) | appendix | |
| bool OS_Oldtimer_Check (timer_id) | appendix | |
| OS_Oldtimer_Wait (timer_id) | appendixappendixappendix | |