Apollo3 GPIO函数及宏的说明
一、GPIO API
am_hal_gpio_pinconfig(uint32_t ui32Pin, am_hal_gpio_pincfg_t bfGpioCfg).
此函数在配置给定引脚至最终功能。给定参数bfGPIOCfg用于检查与特定引脚的兼容性。任何配置或参数错误会导致一个错误返回。
ui32Pin 为需要配置的引脚号
am_hal_gpio_pincfg_t 结构体包含下列信息:
uFuncSel     0-7,在am_hal_pin.h中定义
ePullup        上拉电阻配置 ,取值:
                    AM_HAL_GPIO_PIN_PULLUP_NONE
                    AM_HAL_GPIO_PIN_PULLUP_1_5K
                    AM_HAL_GPIO_PIN_PULLUP_6K
eGPOutcfg   输出引脚的输出类型,取值:
                    AM_HAL_GPIO_PIN_OUTCFG_DISABLE

                    AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL
                    AM_HAL_GPIO_PIN_OUTCFG_OPENDRAIN
                    AM_HAL_GPIO_PIN_OUTCFG_TRISTATE
eDriveStrength 驱动能力,取值:
                   AM_HAL_GPIO_PIN_DRIVESTRENGTH_2MA

                   AM_HAL_GPIO_PIN_DRIVESTRENGTH_4MA
                   AM_HAL_GPIO_PIN_DRIVESTRENGTH_8MA
                   AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA
eGPInput    GPIO输入类型,取值:
                   AM_HAL_GPIO_PIN_INPUT_NONE
                   AM_HAL_GPIO_PIN_INPUT_ENABLE
eGPRdZero GPIO配置为GPIO输入时,此pin可以读取或者一直读取为0。
                   AM_HAL_GPIO_PIN_RDZERO_READPIN
                   AM_HAL_GPIO_PIN_RDZERO_ZERO

eIntDir        中断配置
                   AM_HAL_GPIO_PIN_INTDIR_LO2HI
                   AM_HAL_GPIO_PIN_INTDIR_HI2LO
                   AM_HAL_GPIO_PIN_INTDIR_NONE
                   AM_HAL_GPIO_PIN_INTDIR_BOTH

ePowerSw  引脚可以用于配置成电流源 or 汇电流。
                   AM_HAL_GPIO_PIN_POWERSW_NONE
                   AM_HAL_GPIO_PIN_POWERSW_VDD
                   AM_HAL_GPIO_PIN_POWERSW_VSS

uIOMnum   用于定义一个引脚为片选并指定IO Master number(0-5)或MSPI(6)。大部分引脚可以配位片选且每个引脚支持4个IOM/MSPI和channel号的组合。取值0-5或6。
uNCE         和uIOMnum一同使用,用于定义特定SPI设备CE号,取值0-3
eCEpol       作为片选时定义CE极性
                   AM_HAL_GPIO_PIN_CEPOL_ACTIVELOW
                   AM_HAL_GPIO_PIN_CEPOL_ACTIVEHIGH
am_hal_gpio_state_read(uint32_t ui32Pin, am_hal_gpio_read_type_e eReadType, uint32_t *pui32ReadState)
ui32Pin 为需要配置的引脚号
eReadType    AM_HAL_GPIO_INPUT_READ

                     AM_HAL_GPIO_OUTPUT_READ
                     AM_HAL_GPIO_ENABLE_READ
pui32ReadState 保存返回值的指针
am_hal_gpio_state_write(uint32_t ui32Pin, am_hal_gpio_write_type_e eWriteType)
ui32Pin 为需要配置的引脚号

eWriteType  AM_HAL_GPIO_OUTPUT_SET

                    AM_HAL_GPIO_OUTPUT_CLEAR
                    AM_HAL_GPIO_OUTPUT_TOGGLE
                    AM_HAL_GPIO_OUTPUT_TRISTATE_ENABLE
                    AM_HAL_GPIO_OUTPUT_TRISTATE_DISABLE

二、中断函数

am_hal_gpio_interrupt_enable(uint64_t ui64InterruptMask)

使能中断,0-49位有效
am_hal_gpio_interrupt_disable(uint64_t ui64InterruptMask)
失能中断,0-49位有效

am_hal_gpio_interrupt_clear(uint64_t ui64InterruptMask)
清中断,0-49位有效,常和am_hal_gpio_interrupt_status_g et()一起使用
am_hal_gpio_interrupt_status_get(bool bEnabledOnly, uint64_t*pui64IntStatus)

返回当前中断状态,如成功返回AM_HAL_STATUS_SUCCESS。

三、宏定义
am_hal_gpio_input_read(n)             对应am_hal_gpio_state_read(AM_HAL_GPIO_INPUT_READ)
am_hal_gpio_output_read(n)           对应am_hal_gpio_state_read(AM_HAL_GPIO_OUTPUT_READ)

am_hal_gpio_enable_read(n)          对应am_hal_gpio_state_read(AM_HAL_GPIO_ENABLE_READ)
am_hal_gpio_output_clear(n)          对应am_hal_gpio_state_write(AM_HAL_GPIO_OUTPUT_CLEAR)
am_hal_gpio_output_set(n)             对应am_hal_gpio_state_write(AM_HAL_GPIO_OUTPUT_SET)
am_hal_gpio_output_toggle(n)       对应am_hal_gpio_state_write(AM_HAL_GPIO_OUTPUT_TOGGLE)
am_hal_gpio_output_tristate_disable(n)   对应am_hal_gpio_state_write(AM_HAL_GPIO_TRISTATE_DISABLE)
am_hal_gpio_output_tristate_enable(n)    对应am_hal_gpio_state_write(AM_HAL_GPIO_TRISTATE_ENABLE)
am_hal_gpio_output_tristate_toggle(n)     对应am_hal_gpio_state_write(AM_HAL_GPIO_TRISTATE_TOGGLE)
am_hal_gpio_interrupt_register(uint32_t ui32GPIONumber, am_hal_gpio_handler_t pdnHandler)   用于为特定GPIO中断注册特定处理函数
am_hal_gpio_interrupt_service(uint64_t ui64Status)  GPIO中断总服务程序,由am_gpio_isr()调用,该函数同样调用am_hal_gpio_interrupt_status_get作为此函数的参数。常用做法是应用调用am_hal_gpio_interrupt_register注册callback处理程序。

四、创建BSP pin list

由python脚本生成am_bsp_pins.c和am_bsp_pins.h。

每个PIN格式:

pin
    name = UART_TX
    desc = This pin is the COM_UART transmit pin.
    pinnum = 35
    func_sel = AM_HAL_PIN_35_UART1TX
    drvstrength = 2

keyword及取值范围解释如下:
name        引脚名称,每个引脚名称必须唯一
desc         描述,会在头文件中生成描述

funcsel      取值0-7,等价于am_hal_pin.h同值宏

pinnum      引脚号(0-49)

drvstrength 驱动能力, 2, 4, 8, 或12,缺省值2

GPOutCfg  disable, pushpull, opendrain, tristate
GPinput     true, false.
GPRdZero readpin, zero
intdir          none, lo2hi, hi2lo, either
pullup        none, 1_5K, 6K, 12K, 24K
PowerSw   VDD or VSS

下列参数与SPI有关:

IOMnum    与CE有关的IOM数量,0-5 for SPI, 6 for MSPI
CENum     0-3代表CE号,会生成下列宏:
#define AM_BSP_<name>_CHNL <CEnum>
CEpol        CE极性,LOW (default) or HIGH.

Apollo3 GPIO相关推荐

  1. Apollo 3 plus GPIO配置

    IO配置函数 uint32_t am_hal_gpio_pinconfig(uint32_t ui32Pin, am_hal_gpio_pincfg_t bfGpioCfg) 参数uint32_t u ...

  2. STM32 GPIO的原理、特性、选型和配置

    目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...

  3. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  4. 【驱动】GPIO 作为按键时的 设备树 配置

    #[驱动]GPIO作为按键时的 设备树 配置 0.设备树 0.0 别名 imx6ul.dtsi 什么作用??? /*************开始/ / { aliases {- gpio0 = &am ...

  5. 【驱动】GPIO寄存器配置总结

    #[驱动]GPIO寄存器配置总结 0.设置复用功能为GPIO 1.设置引脚特性,与硬件匹配 2.配置寄存器举例 字段解释: 2.0.SRE 数据位:0 SRE(Slew Rate Field):转换速 ...

  6. linux驱动:设备-总线-驱动(以TI+DM8127中GPIO为例)

    一:说明:这次学习设备-总线-驱动是以TI+DM8127的GPIO为例 1.GPIO资源注册到omap_hwmod链表中 2.初始化GPIO 3.将GPIO注册到plarform层 4.将GPIO注册 ...

  7. linux驱动:TI+DM8127+GPIO(五)之plarform

    五.[GPIO驱动框架>平台platform] (一)设备找驱动 1.drivers/base/platform.c中 int platform_device_register(structpl ...

  8. linux驱动:TI+DM8127+GPIO(四)之设备

    四.[GPIO驱动框架>设备device] arch/arm/mach-omap2/gpio.c中 1.static int __init omap2_gpio_init(void) { ret ...

  9. linux驱动:TI+DM8127+GPIO(三)之omap_hwmod中添加GPIO资源

    三.[GPIO驱动框架>向omap_hwmod中添加GPIO资源] ***将GPIO硬件信息添加到注册到omap_hwmod_list列表中 Arch/arm/plat-omap/include ...

最新文章

  1. c语言自动生成版本号,单片机C程序自动产生并增加版本号
  2. OPKG 软件包管理
  3. python学起来难不难-零基础学Python爬虫难不难?要怎么学?
  4. GetSafeHdc( )
  5. 大数据促健康产业高增长
  6. python的flask找不到网页_掌握这几个网页制作小技巧,让你快速提高你的网站转化率...
  7. Loadrunner 入门连载教程
  8. python前端代码_python前端HTML
  9. stimulsoft入门教程:分层报表(下)
  10. windows设备管理器
  11. Facebook开源新的压缩算法,性能超zlib
  12. 苹果智能家居的未来之路
  13. 泛化误差,偏差方差分解
  14. con 元器件符号_Protues 元器件符号
  15. Linux(二、三、四)简单命令、系统目录结构、文件类型、命令行管理文件学习
  16. 3D环绕音乐单页网站源码
  17. 用python绘制叠加等边三角形_使用turtle库绘制叠加等边三角形
  18. OBS studio黑屏解决办法
  19. 新式 AIMD 拥塞控制
  20. 黑马程序员C++学习-01

热门文章

  1. GeoTools入门(五)-- CRS操作
  2. java标准i o重定向_Java重定向标准输入输出流I/O
  3. Android8.1去掉低电量时的弹窗提醒功能
  4. 即得宝,用3D助力珠宝首饰行业的线上表达与远程沟通
  5. 计算机专业海报排版设计,【平面设计必看干货:海报设计排版构图篇】- 环球网校...
  6. 高通推人工智能引擎,骁龙660等平台支持
  7. vue+elementui中将图片转换位base64格式
  8. 小程序开发——常用布局
  9. WinAPI: MessageBeep 用法
  10. A - Mio visits ACGN Exhibition(dp)