• 大小: 12KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: Jetson  Serial  POLLIN  

资源简介

主要是使用POLLIN中断去读取串口数据,这是我认为和stm32最近似的一种串口中断

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “serial.hpp“
 /****************************************************************
 * Constants
 ****************************************************************/
 
#define SYSFS_GPIO_DIR “/sys/class/gpio“
#define POLL_TIMEOUT (3 * 1000) /* 3 seconds */
#define MAX_BUF 64

/****************************************************************
 * gpio_export
 ****************************************************************/
int gpio_export(unsigned int gpio)
{
int fd len;
char buf[MAX_BUF];
 
fd = open(SYSFS_GPIO_DIR “/export“ O_WRONLY);
if (fd < 0) {
perror(“gpio/export“);
return fd;
}
 
len = snprintf(buf sizeof(buf) “%d“ gpio);
write(fd buf len);
close(fd);
 
return 0;
}

/****************************************************************
 * gpio_unexport
 ****************************************************************/
int gpio_unexport(unsigned int gpio)
{
int fd len;
char buf[MAX_BUF];
 
fd = open(SYSFS_GPIO_DIR “/unexport“ O_WRONLY);
if (fd < 0) {
perror(“gpio/export“);
return fd;
}
 
len = snprintf(buf sizeof(buf) “%d“ gpio);
write(fd buf len);
close(fd);
return 0;
}

/****************************************************************
 * gpio_set_dir
 ****************************************************************/
int gpio_set_dir(unsigned int gpio unsigned int out_flag)
{
int fd len;
char buf[MAX_BUF];
 
len = snprintf(buf sizeof(buf) SYSFS_GPIO_DIR  “/gpio%d/direction“ gpio);
 
fd = open(buf O_WRONLY);
if (fd < 0) {
perror(“gpio/direction“);
return fd;
}
 
if (out_flag)
write(fd “out“ 4);
else
write(fd “in“ 3);
 
close(fd);
return 0;
}

/****************************************************************
 * gpio_set_value
 ****************************************************************/
int gpio_set_value(unsigned int gpio unsigned int value)
{
int fd len;
char buf[MAX_BUF];
 
len = snprintf(buf sizeof(buf) SYSFS_GPIO_DIR “/gpio%d/value“ gpio);
 
fd = open(buf O_WRONLY);
if (fd < 0) {
perror(“gpio/set-value“);
return fd;
}
 
if (value)
write(fd “1“ 2);
else
write(fd “0“ 2);
 
close(fd);
return 0;
}

/****************************************************************
 * gpio_get_value
 ****************************************************************/
int gpio_get_value(unsigned int gpio unsigned int *value)
{
int fd len;
char buf[MAX_BUF];
char ch;

len = snprintf(buf sizeof(buf) SYSFS_GPIO_DIR “/gpio%d/value“ gpio);
 
fd = open(buf O_RDONLY);
if (fd < 0) {
perror(“gpio/get-value“);
return fd;
}
 
read(fd &ch 1);

if (ch != ‘0‘) {
*value = 1;
} else {
*value = 0;
}
 
close(fd);
return 0;
}


/*************************************************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5454  2019-04-28 23:41  try_serial_interrupt\gpio_test.cpp
     文件       20936  2019-04-28 23:40  try_serial_interrupt\main
     文件        1480  2019-04-28 23:41  try_serial_interrupt\main.cpp
     文件         316  2019-04-28 23:41  try_serial_interrupt\main.hpp
     文件        5585  2019-04-28 23:41  try_serial_interrupt\serial.cpp
     文件        1599  2019-04-28 23:41  try_serial_interrupt\serial.hpp
     目录           0  2019-04-28 23:42  try_serial_interrupt\

评论

共有 条评论