我要和一个司机约会。有以下几种说法:
/* Get the interrupt GPIO pin number */
gpiod = devm_gpiod_get_optional(dev, GOODIX_GPIO_INT_NAME, GPIOD_IN);
我读过关于的文章,但我仍然不知道到底返回了什么?
我知道gpiod_direction_output返回一个struct gpio_desc。但是devm_gpiod_get_optional的情况似乎并非如此,因为我尝试过在每个示例中打印gpiod->label,并且得到了dereferencing pointer to incom
我最近开始学习嵌入式C,并一直在使用基于ARM的FRDMKL25Z微控制器。现在,对于使用开关连接LED,我遇到了两种编码方法:
裸金属:
while(1) {
if(GPIO_D->PDIR & (1<<4)) {
/* Make the LED as OFF */
GPIO_C->PSOR = (1 << 8);
}
else {
/* Make the LED as ON */
GPIO_C->PCOR = (1 << 8);
}
我想知道“gpio索引”的含义是什么。
这就是我在of_gpio.h中看到的
/**
* of_get_named_gpio() - Get a GPIO number to use with GPIO API
* @np: device node to get GPIO from
* @propname: Name of property containing gpio specifier(s)
* @index: index of the GPIO
*
* Returns GPIO number to use with Linux generic GPIO API, o
我正在开发一个嵌入式Linux ARM系统,它需要以特定的顺序关闭一些电源(通过GPIO控制),从而对电源故障信号做出反应。这个过程需要尽快启动,所以我已经安装了一个中断处理程序来检测这个电源故障。
问题是,我们需要在关闭每一种供应之间引入一点延迟。我知道中断处理程序中通常不允许延迟,但是如果这个处理程序永远不会返回(电源正在故障!),这是完全没有问题的。
我试图通过使用中描述的方法来引入延迟,但在我的一生中,我实际上不能造成可测量的延迟(在示波器上观察到)。
我做错了什么,怎么做才是对的?
下面是相关的代码。
/* This function sets en_gpio low, then w
我正在开发一个具有非常有限的Shell的嵌入式linux。内置的命令非常少。
我想检查一下gpio端口。这在下面的代码中工作得很好。但它需要大量的CPU / IO - Power!!所以我想休息一下,像睡觉一样。但是最小的睡眠时间是1秒。我会考虑125毫秒。
#!/bin/sh
#Abfrage des GPIO 23-->0"
while [ 1 ]
do
gpio23=`/bin/gpio r | grep 23`
echo "" > /dev/null
case "$gpio23" in
*0x7801*)
我试图在嵌入式平台上写入GPIO引脚,我编写了读取引脚的代码(成功),并通过回显文件进行了测试(成功)。
可以产生此错误的最小代码:
static int write_gpio(int gpio_num, int data)
{
char buf[50];
int nwritten, file_desc;
int attempts;
snprintf(buf, sizeof(buf), "/sys/class/gpio/gpio%d/value", gpio_num);
file_desc = open(buf, O_WRONLY);
i