搜索
bottom↓
回复: 6

想要把GPIO端口和引脚号作为参数传给结构体,可以这样写?

[复制链接]

出0入0汤圆

发表于 2019-2-27 22:24:09 | 显示全部楼层 |阅读模式
结构体声明:
typedef struct
{
        GPIO_TypeDef* GPIOx;
        uint16_t GPIO_Pin;
}GPIO_STATUS;

typedef struct
{
        GPIO_TypeDef* GPIOx;
        uint16_t GPIO_Pin;
}GPIO_CHECK;

typedef struct
{
        GPIO_TypeDef* GPIOx;
        uint16_t GPIO_Pin;
}GPIO_CONTROL;

typedef struct _DEVICE_PROPERTY
{
        GPIO_STATUS* GPIO_Status;
        GPIO_CHECK* GPIO_Check;
        GPIO_CONTROL* GPIO_Control;
       
        UINT8 Device_Status;
               
}__attribute__((packed)) DEVICE_PROPERTY;

创建设备并初始化GPIO配置
DEVICE_PROPERTY Main_Light ;
Device_GPIO_Default(&Main_Light,GPIOC,GPIO_Pin_7,GPIOC,GPIO_Pin_6,GPIOC,GPIO_Pin_1);

void Device_GPIO_Default(DEVICE_PROPERTY* device,
                                  GPIO_TypeDef* GPIOX,uint16_t GPIO_PinX,
                                  GPIO_TypeDef* GPIOY,uint16_t GPIO_PinY,
                                  GPIO_TypeDef* GPIOZ,uint16_t GPIO_PinZ )
{
        device->GPIO_Status->GPIOx = GPIOX;
        device->GPIO_Status->GPIO_Pin = GPIO_PinX;       

        device->GPIO_Check->GPIOx = GPIOY;
        device->GPIO_Check->GPIO_Pin = GPIO_PinY;       

        device->GPIO_Control->GPIOx = GPIOZ;
        device->GPIO_Control->GPIO_Pin = GPIO_PinZ;       
}


可以这样写么?很久没写了,希望大神指点,谢谢

出0入0汤圆

 楼主| 发表于 2019-2-28 09:19:29 | 显示全部楼层
求大神指点

出0入0汤圆

 楼主| 发表于 2019-2-28 10:33:20 来自手机 | 显示全部楼层
没人呀,进来看看

出0入0汤圆

发表于 2019-2-28 10:38:11 | 显示全部楼层
这样写是可以的,只是最后Device_GPIO_Default参数太多了,建议为“device”类多添加几个方法,例如setStatus getStatus setControl getContol setCheck

出0入0汤圆

 楼主| 发表于 2019-2-28 10:48:41 来自手机 | 显示全部楼层
xuxi2009 发表于 2019-2-28 10:38
这样写是可以的,只是最后Device_GPIO_Default参数太多了,建议为“device”类多添加几个方法,例如setStat ...

参数那个是小问题,我可以分开配置,但是我现在这的在在线调试的连段选GPIOC都不能赋值成功,Pin赋值的时候,系统就死掉了,求解

出0入0汤圆

发表于 2019-2-28 11:27:36 | 显示全部楼层
GPIOC之类的是不是没有初始化
Device_GPIO_Default(&Main_Light,GPIOC,GPIO_Pin_7,GPIOC,GPIO_Pin_6,GPIOC,GPIO_Pin_1);
里面应该用&GPIOC取地址传入

出0入0汤圆

 楼主| 发表于 2019-2-28 11:35:37 来自手机 | 显示全部楼层
xuxi2009 发表于 2019-2-28 11:27
GPIOC之类的是不是没有初始化
Device_GPIO_Default(&Main_Light,GPIOC,GPIO_Pin_7,GPIOC,GPIO_Pin_6,GPIOC, ...

GPIOC是库文件就初始化了的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 09:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表