移植到stm32f1,实现手动线赋码控制器功能
This commit is contained in:
@@ -48,6 +48,13 @@ typedef struct __gpioin_def{
|
||||
void *private_data;
|
||||
}gpioin_def;
|
||||
|
||||
typedef struct __gpioout_def{
|
||||
const char *name;
|
||||
int (*init)(struct __gpioout_def *u);
|
||||
int (*deinit)(struct __gpioout_def *u);
|
||||
int (*set)(struct __gpioout_def *u,int state);
|
||||
void *private_data;
|
||||
}gpioout_def;
|
||||
|
||||
|
||||
|
||||
@@ -112,6 +119,22 @@ typedef struct __gpioin_def{
|
||||
&_gpioin_##name_,\
|
||||
};
|
||||
|
||||
|
||||
#define gpioout_init_export(name_,init_,deinit_,set_,priv_) \
|
||||
const static char __dev_##name_##_name[] SECTION(".rodata.devstr") = #name_; \
|
||||
RT_USED static gpioout_def _gpioout_##name_={\
|
||||
.name=__dev_##name_##_name,\
|
||||
.init=init_,\
|
||||
.deinit=deinit_,\
|
||||
.set=set_,\
|
||||
.private_data=priv_,\
|
||||
};\
|
||||
RT_USED static const struct dev_struct __dev_##name_ SECTION("devstruct")= \
|
||||
{ \
|
||||
__dev_##name_##_name, \
|
||||
&_gpioout_##name_,\
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -198,9 +221,9 @@ void __interrupt_enable(uint32_t level);
|
||||
#define BIT_ADDR(addr, bitnum) (MEM_ADDR(BITBAND(addr, bitnum)))
|
||||
|
||||
// 获取输出寄存器地址s=A~I
|
||||
#define GPIOx_ODR_ADDR(s) (GPIO##s##_BASE+20)
|
||||
#define GPIOx_ODR_ADDR(s) (GPIO##s##_BASE+12)
|
||||
// 获取输入寄存器地址s=A~I
|
||||
#define GPIOx_IDR_ADDR(s) (GPIO##s##_BASE+16)
|
||||
#define GPIOx_IDR_ADDR(s) (GPIO##s##_BASE+8)
|
||||
|
||||
// gpio输出,s=A~I,n=0~15
|
||||
#define PINOUT(s,n) BIT_ADDR(GPIOx_ODR_ADDR(s),n)
|
||||
|
||||
Reference in New Issue
Block a user