当前位置: 首页 > news >正文

【Phytium】飞腾FT2000/4 GPIO功能开发实例

文章目录

  • 芯片概述
  • 开发环境
  • 开发需求
  • 操作步骤概述
    • 复用为GPIO模式
    • 复用为外部中断模式
  • 参考手册
  • 调试步骤参考
    • 将GPIO1 A组配置为外部中断模式
    • 将GPIO0 B组8个pin配置为GPIO模式(Input)
    • 将GPIO1对应的16个pin配置为GPIO模式(Output)

芯片概述

FT2000/4 有2个GPIO模块,暂定为GPIO0、GPIO1,每个模块有16个接口,分为A组、B组
其中每个模块A组的8个IO支持复用为外部中断信号,两个模块总共16个pin可注册为外部中断
每个IO都可以配置为输入、输出模式

开发环境

芯片:FT2000/4
系统:skip

开发需求

将GPIO0对应的16个pin配置为GPIO模式(Output)
将GPIO1_A组8个pin配置为中断模式
将GPIO1_B组8个pin配置为GPIO模式(Input)

操作步骤概述

复用为GPIO模式

	1. 将对应管脚复用为GPIO							// 配置对应func2. 配置方向寄存器为输入、输出					// gpio_swportX_ddr 清零、置13. 将数据写入数据寄存器、从数据寄存器中读取数据	// gpio_swportX_dr  清零、置1

复用为外部中断模式

	1. 配置方向寄存器为input	// gpio_swporta_ddr 置12. 写中断屏蔽器为0		// gpio_intmask 清零3. 配置中断类型寄存器	// gpio_inttype_level4. 配置中断极性寄存器	// gpio_int_polarity6. 使能中断				// gpio_inten 置1

参考手册

FT-2000四核处理器软件编程手册.pdf // 官网下载:略
CSDN参考文章:https://blog.csdn.net/luky_zhou123/article/details/125224529

调试步骤参考

将GPIO1 A组配置为外部中断模式

# 设置管脚复用 // 根据GPIO管脚、功能复用标,来确定管脚号和功能类型iomux_set_fun(ckobv_sel3_pad, 2);//gpio1-A0iomux_set_fun(ckobv_sel4_pad, 2);//gpio1-A1iomux_set_fun(gmac1_phy_txd0_pad, 2);//gpio1-A2...
# 配置GPIO模块为中断模式...for (pin = 0; pin < 8; pin++){/*配置方向寄存器为输入*/GpioClrBit(&gpio1_reg_info->gpio_swporta_ddr, pin);/*写中断屏蔽寄存器为 0*/GpioClrBit(&gpio1_reg_info->gpio_intmask, pin);/*配置中断类型寄存器*/GpioSetBit(&gpio1_reg_info->gpio_inttype_level, pin);/*配置中断极性寄存器上升沿*/GpioSetBit(&gpio1_reg_info->gpio_int_polarity, pin);/*使能中断*/GpioSetBit(&gpio1_reg_info->gpio_inten, pin);}
# 注册中断回调函数等int_install_handler(CALLBACK_FUNC);...
# 使能中断int_enable_pic(43);		// GPIO1 中断号43

将GPIO0 B组8个pin配置为GPIO模式(Input)

# 设置管脚复用 // 根据GPIO管脚、功能复用标,来确定管脚号和功能类型iomux_set_fun(spi0_si_pad, 1);//gpio1-B0iomux_set_fun(sd_cmd_pas, 1);//gpio1-B1...
# 配置GPIO模块为输入模式gpio0_swportb_ddr bit7~bit0 清零,bit[7:0] = GPIO0_A[7:0]
# 读取GPIO锁存值gpio0_swportb_dr bit7~bit0 取值,bit[7:0] = GPIO0_A[7:0]

将GPIO1对应的16个pin配置为GPIO模式(Output)

# 设置管脚复用 // 根据GPIO管脚、功能复用标,来确定管脚号和功能类型iomux_set_fun(spi0_si_pad, 1);//gpio1-B0iomux_set_fun(sd_cmd_pas, 1);//gpio1-B1...
# 配置GPIO模块为输出模式gpio1_swporta_ddr bit7~bit0 置位,bit[7:0] = GPIO1_A[7:0]gpio1_swportb_ddr bit7~bit0 置位,bit[7:0] = GPIO1_B[7:0]
# 输出GPIO寄存器的值gpio1_swporta_dr bit7~bit0 置位/清零,bit[7:0] = GPIO1_A[7:0]gpio1_swportb_dr bit7~bit0 置位/清零,bit[7:0] = GPIO1_B[7:0]

相关文章:

  • Python实例题:Python实现Zip文件的暴力破解
  • 游戏盾在非游戏行业的应用实践与价值分析
  • leetcode:372. 超级次方(python3解法,数学相关算法题)
  • 【SQL】关键字
  • 在Spring Cloud中将Redis共用到Common模块
  • 健康管理系统的核心价值:降低成本,提升效率
  • leetcode701.二叉搜索树中的插入操作:迭代法利用有序性寻找空节点插入点
  • Java HashMap原理:高效键值存储的秘密
  • Spring AI(9)——MCP客户端
  • 4060显卡什么水平 4060显卡参数介绍
  • 【QT】理解QT机制之“元对象系统”
  • JavaSE:面向对象进阶之抽象类
  • [python] lock 解决线程安全问题
  • 信号与系统速成-1.绪论
  • Java面试八股(Java基础,Spring,SpringBoot篇)
  • json中对象转字符串和字符串转对象的方法
  • 【Linux系统移植】Cortex-A8 Linux系统移植(超详细)
  • Next.js 布局(Layout)与模板(Template)深度解析:从原理到实战
  • Vue模板语法
  • 大模型应用开发之评估
  • 慈善会网站建设方案/营业推广的方式
  • 工业设计手绘/seo关键词优化推广哪家好
  • 湛江全套网站建设费用/免费关键词挖掘工具
  • 网站访问不了的原因/社群营销的方法和技巧
  • 筑巢做网站怎么样/360建站官网
  • 网上停车场做施工图人员网站/正规拉新推广平台有哪些