gpiod_set_value_cansleep 跟 gpiod_set_value有何差异
时间: 2024-01-20 22:04:07 浏览: 58
`gpiod_set_value`和`gpiod_set_value_cansleep`的主要区别在于它们的休眠行为。`gpiod_set_value`是一个非休眠函数,它不能在睡眠期间调用,而`gpiod_set_value_cansleep`是一个休眠函数,可以在睡眠期间调用。如果您的代码需要在睡眠期间进行GPIO操作,则必须使用`gpiod_set_value_cansleep`。否则,如果您的代码不需要在睡眠期间进行GPIO操作,则应使用`gpiod_set_value`,因为它比`gpiod_set_value_cansleep`更快。
下面是一个使用`gpiod_set_value_cansleep`的示例:
```c
#include <linux/gpio.h>
#include <linux/delay.h>
struct gpio_desc *desc;
// 获取GPIO描述符
desc = gpiod_get(dev, "gpio-name", GPIOD_OUT_LOW);
// 在睡眠期间设置GPIO值
gpiod_set_value_cansleep(desc, 1);
mdelay(1000);
gpiod_set_value_cansleep(desc, 0);
// 释放GPIO描述符
gpiod_put(desc);
```
下面是一个使用`gpiod_set_value`的示例:
```c
#include <linux/gpio.h>
struct gpio_desc *desc;
// 获取GPIO描述符
desc = gpiod_get(dev, "gpio-name", GPIOD_OUT_LOW);
// 在非睡眠期间设置GPIO值
gpiod_set_value(desc, 1);
gpiod_set_value(desc, 0);
// 释放GPIO描述符
gpiod_put(desc);
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)