实现电机,按键,虚拟串口,未验证

This commit is contained in:
ranchuan
2023-06-30 14:23:54 +08:00
parent edd3010a20
commit b15db16b91
14 changed files with 1130 additions and 368 deletions

View File

@@ -5,7 +5,6 @@
#include "rtthread.h"
#include <rthw.h>
#include "string.h"
#include "stm32mp1xx.h"
struct dev_struct{
@@ -17,7 +16,7 @@ struct dev_struct{
typedef struct __uart_def{
const char *name;
int (*init)(struct __uart_def *u);
int (*init)(struct __uart_def *u,int bsp);
int (*deinit)(struct __uart_def *u);
int (*set_irq)(struct __uart_def *u,void (*irq)(void *t,uint8_t d),void *t);
int (*set_end_irq)(struct __uart_def *u,uint8_t *rx_buff,int rx_buff_size,
@@ -41,7 +40,13 @@ typedef struct __pwm_def{
}pwm_def;
typedef struct __gpioin_def{
const char *name;
int (*init)(struct __gpioin_def *u);
int (*deinit)(struct __gpioin_def *u);
int (*state)(struct __gpioin_def *u);
void *private_data;
}gpioin_def;
@@ -89,7 +94,22 @@ typedef struct __pwm_def{
RT_USED static const struct dev_struct __dev_##name_ SECTION("devstruct")= \
{ \
__dev_##name_##_name, \
&_pwm_##name_, \
&_pwm_##name_,\
};
#define gpioin_init_export(name_,init_,deinit_,state_,priv_) \
const static char __dev_##name_##_name[] SECTION(".rodata.devstr") = #name_; \
RT_USED static gpioin_def _gpioin_##name_={\
.name=__dev_##name_##_name,\
.init=init_,\
.deinit=deinit_,\
.state=state_,\
.private_data=priv_,\
};\
RT_USED static const struct dev_struct __dev_##name_ SECTION("devstruct")= \
{ \
__dev_##name_##_name, \
&_gpioin_##name_,\
};
@@ -132,7 +152,7 @@ void param_err_handle(const char *param,const char *file,const char *fun,int lin
void cpy4byte(uint32_t *dst,uint32_t *src,int num_4byte);
// <EFBFBD><EFBFBD><EFBFBD>s==0,<EFBFBD><EFBFBD><EFBFBD>ӡ
// 如果s==0,则打印
#define param_check(s) \
if((s)==0){\
param_err_handle(#s,__FILE__,__func__,__LINE__);}
@@ -177,12 +197,12 @@ void __interrupt_enable(uint32_t level);
#define MEM_ADDR(addr) *((volatile uint32_t *)(addr))
#define BIT_ADDR(addr, bitnum) (MEM_ADDR(BITBAND(addr, bitnum)))
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַs=A~I
// 获取输出寄存器地址s=A~I
#define GPIOx_ODR_ADDR(s) (GPIO##s##_BASE+20)
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַs=A~I
// 获取输入寄存器地址s=A~I
#define GPIOx_IDR_ADDR(s) (GPIO##s##_BASE+16)
// gpio<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s=A~I,n=0~15
// gpio输出,s=A~I,n=0~15
#define PINOUT(s,n) BIT_ADDR(GPIOx_ODR_ADDR(s),n)
#define PININ(s,n) BIT_ADDR(GPIOx_IDR_ADDR(s),n)