【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]