请选择 进入手机版 | 继续访问电脑版
查看: 43|回复: 2

[求助] 请教一个检测gpio电平的函数

[复制链接]

该用户从未签到

4

主题

9

帖子

0

金豆

注册会员

Rank: 2

积分
102
最后登录
2019-9-19
发表于 2019-8-10 22:28:20 | 显示全部楼层 |阅读模式
我在项目里找到了几个关于gpio接口的函数,但是不知道哪个能检测gpio的电平,各位老师能帮我看一下吗(我觉得比较像的有gpio_read,gpio_mode gpio_is_connected)。另外我知道自己很菜,想问一下有什么lpc单片机入门的视频或者书可以看的。谢谢大家了。
第一个文件
#ifndef MBED_GPIO_OBJECT_H
#define MBED_GPIO_OBJECT_H
#include "mbed_assert.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
    PinName  pin;
    uint32_t mask;
    __IO uint32_t *reg_dir;
    __IO uint32_t *reg_set;
    __IO uint32_t *reg_clr;
    __I  uint32_t *reg_in;
} gpio_t;
static inline void gpio_write(gpio_t *obj, int value)
{
    MBED_ASSERT(obj->pin != (PinName)NC);
    if (value)
        *obj->reg_set = obj->mask;
    else
        *obj->reg_clr = obj->mask;
}
static inline int gpio_read(gpio_t *obj)
{
    MBED_ASSERT(obj->pin != (PinName)NC);
    return ((*obj->reg_in & obj->mask) ? 1 : 0);
}
static inline int gpio_is_connected(const gpio_t *obj) {
    return obj->pin != (PinName)NC;
}
#ifdef __cplusplus
}
#endif
#endif
第二个文件
#ifndef MBED_GPIO_API_H
#define MBED_GPIO_API_H
#include "device.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Set the given pin as GPIO
* @param pin The pin to be set as GPIO
* @return The GPIO port mask for this pin
**/
uint32_t gpio_set(PinName pin);
/* Checks if gpio object is connected (pin was not initialized with NC)
* @param pin The pin to be set as GPIO
* @return 0 if port is initialized with NC
**/
int gpio_is_connected(const gpio_t *obj);
/* GPIO object */
void gpio_init(gpio_t *obj, PinName pin);
void gpio_mode (gpio_t *obj, PinMode mode);
void gpio_dir  (gpio_t *obj, PinDirection direction);
void gpio_write(gpio_t *obj, int value);
int  gpio_read (gpio_t *obj);
// the following set of functions are generic and are implemented in the common gpio.c file
void gpio_init_in(gpio_t* gpio, PinName pin);
void gpio_init_in_ex(gpio_t* gpio, PinName pin, PinMode mode);
void gpio_init_out(gpio_t* gpio, PinName pin);
void gpio_init_out_ex(gpio_t* gpio, PinName pin, int value);
void gpio_init_inout(gpio_t* gpio, PinName pin, PinDirection direction, PinMode mode, int value);
#ifdef __cplusplus
}
#endif
#endif

我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

4

主题

9

帖子

0

金豆

注册会员

Rank: 2

积分
102
最后登录
2019-9-19
 楼主| 发表于 2019-8-11 23:08:33 | 显示全部楼层
已解决
回复

使用道具 举报

该用户从未签到

216

主题

4466

帖子

0

金豆

超级版主

Rank: 8Rank: 8

积分
6695
最后登录
2019-9-20
发表于 2019-8-12 17:56:33 | 显示全部楼层
好的,后续遇到新的问题,欢迎继续发帖交流。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|恩智浦技术社区

GMT+8, 2019-9-20 22:00 , Processed in 0.215983 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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