fk0легенда (11.06.2014 13:46 - 13:48, просмотров: 130) ответил Codavr на Это как?
Пример 1:
#define FIFO_PTR uint8_t
#include "fifo.h"
#define MIN_FIFO_FREE 8
declare_fifo(uart1_tx, 64)
defun_fifo_getc(uart1_tx)
defun_fifo_putc(uart1_tx)
defun_fifo_write(uart1_tx)
declare_fifo(uart1_rx, 128)
defun_fifo_getc(uart1_rx)
defun_fifo_read(uart1_rx)
defun_fifo_putc(uart1_rx)
declare_fifo(uart2_tx, 32)
defun_fifo_getc(uart2_tx)
defun_fifo_putc(uart2_tx)
defun_fifo_write(uart2_tx)
declare_fifo(uart2_rx, 128)
defun_fifo_getc(uart2_rx)
defun_fifo_read(uart2_rx)
defun_fifo_putc(uart2_rx)
Содержимое fifo.h:
#define declare_fifo(iob, size) \
volatile static unsigned char iob##buf[(size)]; \
volatile static NEAR FIFO_PTR iob##_rd, iob##_wr;
#define defun_fifo_getc(iob) \
int iob##_getc(void) { \
int c; \
register FIFO_PTR rd=iob##_rd; \
if (__BUF_IS_EMPTY(iob##buf, rd, iob##_wr)) return -1; \
c=__BUF_READ(iob##buf, rd), iob##_rd=++rd; \
return c; \
}
...
Пример 2:
#ifdef _MPC_ /* for PIC18xxx */
#define SUFFIX _intr
#include "timers_intr.c"
#undef SUFFIX
#endif
#include "timers.intr.c"
Содержимое timers_intr.c:
#undef MKNAME
#ifdef SUFFIX
#define MKNAME(name) name ## SUFFIX
#else
#define MKNAME(name) name
#endif
void MKNAME(timer_set) (ftimer_t tn, ftime_t t)
{
...
}
void MKNAME(timer_stop) (ftimer_t tn)
{
...
}
[ZX]