移植到stm32f1,实现手动线赋码控制器功能

This commit is contained in:
ranchuan
2023-09-09 17:27:06 +08:00
parent 8d779a68f3
commit 7baa63de05
382 changed files with 36618 additions and 148064 deletions

View File

@@ -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)