1 |
|
2 | #define GLUE(a, b) a##b
|
3 | #define sbi(var, bit) (var|=1<<bit)//set
|
4 | #define cbi(var, bit) (var&=~(1<<bit))//clear
|
5 | #define tbi(var, bit) (var^=1<<bit)//toggle
|
6 | #define gbi(var, bit) (var>>bit&1)//get
|
7 | #define wait _delay_ms(1000)
|
8 | #define wait10 {_delay_ms(3333);_delay_ms(3333);_delay_ms(3333);}
|
9 | #define u8 uint8_t
|
10 | #define u16 uint16_t
|
11 | #define u32 uint32_t
|
12 | #define v volatile
|
13 |
|
14 | #if AVR
|
15 | #define PORT(x) GLUE(PORT, x)
|
16 | #define PIN(x) GLUE(PIN, x)
|
17 | #define DDR(x) GLUE(DDR, x)
|
18 | #define pinSET(x,y) PORT(x) |=(1<<y)
|
19 | #define pinCLR(x,y) PORT(x)&=~(1<<y)
|
20 | #define pinTOG(x,y) PORT(x)^=(1<<y)
|
21 | #define pinDIRin(x,y) DDR(x)&=~(1<<y)
|
22 | #define pinDIRout(x,y) DDR(x)|=(1<<y)
|
23 | #define pinVAL(x,y) (PIN(x)&(1<<y))
|
24 | // #define MINimal(x,y) ((x<y) ? x : y)
|
25 | #define pinPULLUP(x,y,z) (z)?PORT(x)|=(1<<y):PORT(x)&=~(1<<y)//0_no 1_up
|
26 | #define ux uint8_t
|
27 | //_delay_us
|
28 | #include <util/delay.h>
|
29 | #endif
|
30 |
|
31 | #if stm
|
32 | #define GPIO(x) GLUE(GPIO, x)
|
33 | #define RCC_APB2Periph_GPIO(x) GLUE(RCC_APB2Periph_GPIO, x)
|
34 | // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO(x) , ENABLE);
|
35 | #define PIN(x) GLUE(GPIO_PIN_,x)
|
36 | #define pinSET(x,y) GPIO(x)->ODR |=(1<<y)
|
37 | #define pinCLR(x,y) GPIO(x)->ODR &=~(1<<y)
|
38 | GPIO_InitTypeDef GPIO_InitStructure;
|
39 | #define pinDIRout(x,y) { \
|
40 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; \
|
41 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; \
|
42 | GPIO_InitStructure.GPIO_Pin = 1<<y ; \
|
43 | GPIO_Init(GPIO(x), &GPIO_InitStructure);}
|
44 |
|
45 | #define pinDIRin(x,y) { \
|
46 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; \
|
47 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; \
|
48 | GPIO_InitStructure.GPIO_Pin = 1<<y; \
|
49 | GPIO_Init(GPIO(x), &GPIO_InitStructure);}
|
50 |
|
51 | /*0_no 1_up 2_down*/
|
52 | #define pinPULLUP(x,y,z) { \
|
53 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; \
|
54 | GPIO_InitStructure.GPIO_Mode = z; \
|
55 | GPIO_InitStructure.GPIO_Pin = 1<<y ; \
|
56 | GPIO_Init(GPIO(x), &GPIO_InitStructure);}
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | #define pinVAL(x,y) (GPIO(x)->IDR)&(1<<(y))
|
62 |
|
63 |
|
64 | #define pinTYPE(x,y) GPIO(x)->OTYPER&=~(3<<(y*2))//
|
65 | #endif
|
66 | //----------------------------------------
|
67 | #define led1_tog pinTOG(LED1_port,LED1_pin)
|
68 | #define led1_on pinSET(LED1_port,LED1_pin)
|
69 | #define led1_off pinCLR(LED1_port,LED1_pin)
|
70 | #define led1_blink {led1_tog;_delay_ms(300);led1_tog;_delay_ms(300);led1_tog;\
|
71 | _delay_ms(300);led1_tog;_delay_ms(300);}
|
72 | #define led1_init pinDIRout(LED1_port,LED1_pin);led1_blink;
|
73 |
|
74 | #define led2_tog pinTOG(LED2_port,LED2_pin)
|
75 | #define led2_on pinSET(LED2_port,LED2_pin)
|
76 | #define led2_off pinCLR(LED2_port,LED2_pin)
|
77 | #define led2_blink {led2_tog;_delay_ms(300);led2_tog;_delay_ms(300);led2_tog;\
|
78 | _delay_ms(300);led2_tog;_delay_ms(300);}
|
79 | #define led2_init pinDIRout(LED2_port,LED2_pin);led2_blink;
|
80 | //pinout
|
81 | #define led_on led1_on
|
82 | #define led_off led1_off
|
83 |
|
84 |
|
85 | #define true 1
|
86 | #define false 0
|
87 |
|
88 | void nothing(void){;}
|