1 #ifndef __SWM341_GPIO_H__
2 #define __SWM341_GPIO_H__
3 
4 
5 void GPIO_Init(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t dir, uint32_t pull_up, uint32_t pull_down, uint32_t open_drain);  //引脚初始化,包含引脚方向、上拉、下拉、开漏
6 
7 #define GPIO_INPUT                      ((0 << 0) | (0 << 1) | (0 << 2) | (0 << 3))
8 #define GPIO_INPUT_PullUp               ((0 << 0) | (1 << 1) | (0 << 2) | (0 << 3))
9 #define GPIO_INPUT_PullDown             ((0 << 0) | (0 << 1) | (1 << 2) | (0 << 3))
10 #define GPIO_OUTPUT                     ((1 << 0) | (0 << 1) | (0 << 2) | (0 << 3))
11 #define GPIO_OUTPUT_OpenDrain           ((1 << 0) | (0 << 1) | (0 << 2) | (1 << 3))
12 #define GPIO_OUTPUT_OpenDrain_PullUp    ((1 << 0) | (1 << 1) | (0 << 2) | (1 << 3))
13 
14 #define GPIO_INIT(GPIOx, n, mode)  GPIO_Init(GPIOx, n, (mode & 1) ? 1 : 0, (mode & 2) ? 1 : 0, (mode & 4) ? 1 : 0, (mode & 8) ? 1 : 0)
15 
16 
17 void GPIO_SetBit(GPIO_TypeDef * GPIOx, uint32_t n);                     //将参数指定的引脚电平置高
18 void GPIO_ClrBit(GPIO_TypeDef * GPIOx, uint32_t n);                     //将参数指定的引脚电平置低
19 void GPIO_InvBit(GPIO_TypeDef * GPIOx, uint32_t n);                     //将参数指定的引脚电平反转
20 uint32_t GPIO_GetBit(GPIO_TypeDef * GPIOx, uint32_t n);                 //读取参数指定的引脚的电平状态
21 void GPIO_SetBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);        //将参数指定的从n开始的w位连续引脚的电平置高
22 void GPIO_ClrBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);        //将参数指定的从n开始的w位连续引脚的电平置低
23 void GPIO_InvBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);        //将参数指定的从n开始的w位连续引脚的电平反转
24 uint32_t GPIO_GetBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);    //读取参数指定的从n开始的w位连续引脚的电平状态
25 
26 
27 void GPIO_AtomicSetBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);
28 void GPIO_AtomicClrBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);
29 void GPIO_AtomicInvBits(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t w);
30 
31 
32 // for compatibility
33 #define GPIO_AtomicSetBit   GPIO_SetBit
34 #define GPIO_AtomicClrBit   GPIO_ClrBit
35 #define GPIO_AtomicInvBit   GPIO_InvBit
36 
37 
38 #endif //__SWM341_GPIO_H__
39