关于ar9331 gpio调试遇到的问题

小白今天又踩坑,又有一个填坑的经验

源码:

首先介绍一下关键源码的说明,加红色说明是需要注意的地方

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include " gpio_control_app.h"
#include "errno.h"
//static unsigned char gpio_pin;//define GPIOs to be use
static int gpio_dev_fd = -1;;

int mcu_gpio_pin = 12;
int work_gpio_pin = 18;

void mcu_gpio_release(int signal_no)
{

     ioctl(gpio_dev_fd, GPIO_CONTROL_SET_IN, GPIO_IOCTL_PRAM(mcu_gpio_pin, 0));
    //信号量响应,将相应的IO口设置输入
     ioctl(gpio_dev_fd, GPIO_CONTROL_FREE_GPIO, GPIO_IOCTL_PRAM(mcu_gpio_pin, 0));
    //信号量响应,释放相应的IO口资源

      exit(0);
}

void bsp_gpio_init(void)
{
    gpio_dev_fd = open(GPIO_CONTROL_DEVICE_PATH, O_RDWR);//open gpio device
    if (gpio_dev_fd < 0)
    {

        printf("###open %s ERROR###\n", GPIO_CONTROL_DEVICE_PATH);

    }
    else
    {
         printf("***open %s success***\n", GPIO_CONTROL_DEVICE_PATH);
    }

}

int set_work_gpio(void)
{
    int ret = 0;
    if(gpio_dev_fd == -1)
    {
        return -1;
    }
    printf("work_gpio_pin:%d\n", work_gpio_pin);
    ret =ioctl(gpio_dev_fd, GPIO_CONTROL_REQUEST_GPIO, GPIO_IOCTL_PRAM(work_gpio_pin, 0));
    printf("%s\n",strerror(errno));
    printf("set_gpio ret = %d\n",ret);
    if (ret < 0)
    {
       printf("###request GPIO %d error###", work_gpio_pin);
       return -1;
    }
    ret = ioctl(gpio_dev_fd, GPIO_CONTROL_SET_OUT, GPIO_IOCTL_PRAM(work_gpio_pin, 0));
    i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值