【原创】《wdxLib_for_GD32F103》驱动开发(V0.2)

[复制链接]
bowei181 发表于 2014-3-4 09:52 | 显示全部楼层
这个不错,看看能不能通用
wguiyong 发表于 2014-3-22 18:59 | 显示全部楼层
周先生的支持一定火,顶。
wguiyong 发表于 2014-3-25 19:38 | 显示全部楼层
使用其中的KEY和LED例程,功能正常。但是增加3个按键KEY4,KEY5,KEY6,分别定义如下,扫描的键值不便,请大家指点下吧,谢谢。
/*********************************************************************************************************
    ¶¨Òå¿ØÖÆKEYµÄGPIO¶Ë¿ÚºÍ¹Ü½Å
*********************************************************************************************************/
static  GPIO_TypeDef  *KEY1_PORT;
static  uint16_t       KEY1_PIN;

static  GPIO_TypeDef  *KEY2_PORT;
static  uint16_t       KEY2_PIN;

static  GPIO_TypeDef  *KEY3_PORT;
static  uint16_t       KEY3_PIN;

static  GPIO_TypeDef  *KEY4_PORT;
static  uint16_t       KEY4_PIN;

static  GPIO_TypeDef  *KEY5_PORT;
static  uint16_t       KEY5_PIN;

static  GPIO_TypeDef  *KEY6_PORT;
static  uint16_t       KEY6_PIN;
/*********************************************************************************************************
    ¶¨ÒåKEY
*********************************************************************************************************/
#define  KEY1   0x01
#define  KEY2   0x02
#define  KEY3   0x04
#define  KEY4   0x08
#define  KEY5   0x10
#define  KEY6   0x20

/*********************************************************************************************************
    KEY³õʼ»¯
*********************************************************************************************************/
void KeyInit(uint8_t KEY, GPIO_TypeDef *GPIOx, uint16_t PINn)
{
    switch (KEY)
    {
    case KEY1:
        KEY1_PORT  = GPIOx;
        KEY1_PIN   = PINn;
        ValidFlag |= KEY1;
        gpioPeriphEnable(KEY1_PORT);
        gpioModeConfig(KEY1_PORT, KEY1_PIN, GPIO_MODE_IN_PU);
        break;

    case KEY2:
        KEY2_PORT  = GPIOx;
        KEY2_PIN   = PINn;
        ValidFlag |= KEY2;
        gpioPeriphEnable(KEY2_PORT);
        gpioModeConfig(KEY2_PORT, KEY2_PIN, GPIO_MODE_IN_PU);
        break;

    case KEY3:
        KEY3_PORT  = GPIOx;
        KEY3_PIN   = PINn;
        ValidFlag |= KEY3;
        gpioPeriphEnable(KEY3_PORT);
        gpioModeConfig(KEY3_PORT, KEY3_PIN, GPIO_MODE_IN_PU);
        break;
     
                case KEY4:
        KEY4_PORT  = GPIOx;
        KEY4_PIN   = PINn;
        ValidFlag |= KEY4;
        gpioPeriphEnable(KEY4_PORT);
        gpioModeConfig(KEY4_PORT, KEY4_PIN, GPIO_MODE_IN_PU);
        break;

    case KEY5:
        KEY5_PORT  = GPIOx;
        KEY5_PIN   = PINn;
        ValidFlag |= KEY5;
        gpioPeriphEnable(KEY5_PORT);
        gpioModeConfig(KEY5_PORT, KEY5_PIN, GPIO_MODE_IN_PU);
        break;

    case KEY6:
        KEY6_PORT  = GPIOx;
        KEY6_PIN   = PINn;
        ValidFlag |= KEY6;
        gpioPeriphEnable(KEY6_PORT);
        gpioModeConfig(KEY6_PORT, KEY6_PIN, GPIO_MODE_IN_PU);
        break;
                               
    default:
        break;
    }
}

/*********************************************************************************************************
    Åж¨KEYÊÇ·ñÓÐЧ£¨Ö»Óгõʼ»¯Ö®ºó²Å»áÉúЧ£©
*********************************************************************************************************/
#define  KeyIsValid(KEY)    (ValidFlag & (KEY))
/*********************************************************************************************************
    ¶ÁÈ¡KEYÖµ
*********************************************************************************************************/
uint8_t KeyGet(void)
{
    uint8_t  key = 0x00;

    if (KeyIsValid(KEY1))if (!gpioPinRead(KEY1_PORT, KEY1_PIN)) key |= KEY1;
    if (KeyIsValid(KEY2))if (!gpioPinRead(KEY2_PORT, KEY2_PIN)) key |= KEY2;
    if (KeyIsValid(KEY3))if (!gpioPinRead(KEY3_PORT, KEY3_PIN)) key |= KEY3;
    if (KeyIsValid(KEY4))if (!gpioPinRead(KEY4_PORT, KEY4_PIN)) key |= KEY4;
    if (KeyIsValid(KEY5))if (!gpioPinRead(KEY5_PORT, KEY5_PIN)) key |= KEY5;
    if (KeyIsValid(KEY6))if (!gpioPinRead(KEY6_PORT, KEY6_PIN)) key |= KEY6;
       
    return (key);
}
不知道这么改动错在哪里了?
wangdezhi 发表于 2014-3-31 23:57 | 显示全部楼层
wangdezhi 发表于 2014-3-31 23:58 | 显示全部楼层
gxliu08 发表于 2014-8-2 14:08 | 显示全部楼层
感谢分享,谢谢,学习学习
爱情转移 发表于 2015-3-7 11:16 | 显示全部楼层
感觉写的太乱,改来改去的,还要修改KEIL下的文件,不符合使用习惯
onlylgb 发表于 2016-3-29 14:25 | 显示全部楼层
收藏备用GD32库
Ketose 发表于 2016-3-31 20:46 | 显示全部楼层
谢谢了。。。。。
a7250658 发表于 2016-12-29 15:56 | 显示全部楼层
好东西!!谢谢大神
akenonline 发表于 2017-1-10 10:01 | 显示全部楼层
感谢楼主分享。。。。。。。。。。。。。。。
FrenkieWang 发表于 2017-1-22 08:13 | 显示全部楼层
好资料,顶楼主,谢谢了
lyglary 发表于 2024-3-14 14:43 | 显示全部楼层
小顶小顶
理想阳 发表于 2024-5-28 10:08 | 显示全部楼层
《wdxLib_for_GD32F103驱动开发手册(V0.2):针对GD32F103的驱动库设计与应用指南》介绍一种简单易懂的GD系列微控制器开发流程,旨在提供开发者在嵌入式领域关于此库的驱动开发经验参考。如需简洁概述,可描述为:《wdxLib_for_GD32F103驱动开发手册V0.2版:开发指南与经验分享》。
digit0 发表于 2024-6-6 09:43 | 显示全部楼层
开拓国内第一工作,大力支持!
天天向善 发表于 2024-6-7 00:36 | 显示全部楼层
大明星教练,你好吗? 你好。
软核硬核 发表于 2024-6-16 15:06 | 显示全部楼层
觉得写得太凌乱,改变就改变,还要修改下文件,不符合使用习惯
FranklinUNK 发表于 2024-6-20 15:59 | 显示全部楼层
这个库是干嘛用的啊?
有何不可0365 发表于 2024-7-31 21:47 | 显示全部楼层
在使用GD32F407进行串口通信并启用硬件流控制时,如果出现数据丢失的问题,可能确实与流控制引脚的配置有关。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部