91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-15
  • 語言: 其他
  • 標簽: 海思3531??gpio??GPIO??

資源簡介

根據海思3531 datasheet寫的gpio操作的例子,已經用于實際產品,運行穩定

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

#include?
#include?
#include?
#include?

#include?
#include?
#include?
#include?“hi_gpio.h“

#define??GPIO_1_base_ADDR??0x20160000
#define??GPIO_6_base_ADDR??0x201b0000
#define??GPIO_10_base_ADDR?0x201f0000

#define??GPIO_DIR_base???(groupbase+0x400)
#define??GPIO_INTR_MASK??(groupbase+0x410)
#define??GPIO_DATA_base???data_reg_base


#define?WRITE_REG(Addr?Value)?((*(volatile?unsigned?int?*)(Addr))?=?(Value))
#define?READ_REG(Addr)?????????(*(volatile?unsigned?int?*)(Addr))

//static?DECLARE_MUTEX(gpio_sem);

static?unsigned?int?groupbase=-1;
static?unsigned?int?data_reg_base=0;
static?unsigned?int?gpio1_base_addr_virtual=0;
static?unsigned?int?gpio6_base_addr_virtual=0;
static?unsigned?int?gpio7_base_addr_virtual=0;
static?unsigned?int?gpio10_base_addr_virtual=0;

static?void?gpio_calculate_data_groupbase(unsigned?int?groupnum?unsigned?int?bitnum)
{
????switch(groupnum)
????{
case?1:?
?????groupbase?=gpio1_base_addr_virtual;
?????break;
case?6:?
?????groupbase?=gpio6_base_addr_virtual;
?????break;
case?7:?
?????groupbase?=gpio7_base_addr_virtual;
?????break;
case?10:?
?????groupbase?=gpio10_base_addr_virtual;
?????break;
default:
?????break;
????}

????//printk(“groupbase:%x?!\n“groupbase);
????data_reg_base=groupbase+(1<<(bitnum+2));
????printk(“data_reg_base:%#x?!\n“data_reg_base);
}



static?int?gpio_open(struct?inode?*inode?struct?file?*filp)
{
???return?0;
}

static?int?gpio_release(struct?inode?*inode?struct?file?*filp)
{
return?0;
}


static?int?gpio_ioctl(struct?file?*file?unsigned?int?cmd?unsigned?long?arg)
{
unsigned?char?__user?*argp?=?(unsigned?char?__user?*)arg;
????gpio_groupbit_info?group_bit_info;
????unsigned?int?reg_tmp=0;

????copy_from_user(&group_bit_infoargp?sizeof(gpio_groupbit_info));
printk(“[driver]-debug:gpio_ioctlcmd=%#x\n“cmd);
printk(“[driver]-debug:gpio%d_%d=%d\n“group_bit_info.groupnumbergroup_bit_info.bitnumbergroup_bit_info.value);

???if(((group_bit_info.groupnumber?!=?1)?&&?(group_bit_info.groupnumber?!=?6)
??&&(group_bit_info.groupnumber?!=?10)&&(group_bit_info.groupnumber?!=?7))?||(group_bit_info.bitnumber>7))
????{
printk(“[driver]:group?number:%d?or?bitnum:%d?beyond?extent!\n“group_bit_info.groupnumbergroup_bit_info.bitnumber);
return?-1;
????}

????gpio_calculate_data_groupbase(group_bit_info.groupnumbergroup_bit_info.bitnumber);

????switch(cmd)
????{
????????case?GPIO_SET_DIR:
{
????reg_tmp=READ_REG(GPIO_DIR_base);

????if(group_bit_info.value==0)
????{
reg_tmp?&=~(1< WRITE_REG(GPIO_DIR_basereg_tmp);
????}
????else?if(group_bit_info.value==1)
????{
reg_tmp?|=(1< WRITE_REG(GPIO_DIR_basereg_tmp);
????}
????else
????{
printk(“dir?beyond?of?extent!\n“);
/

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-04-02?14:03??gpio\
?????文件????????6824??2015-04-02?14:02??gpio\hi_gpio.c
?????文件?????????321??2015-04-02?14:02??gpio\hi_gpio.h
?????文件?????????345??2015-04-02?14:02??gpio\Makefile
?????文件????????7826??2015-04-02?14:02??gpio\test_gpio
?????文件????????1831??2015-04-02?14:02??gpio\test_gpio.c

評論

共有 條評論