(一)gpio-逐飞TC264库学习(对比STM32 HAL库)

本文介绍了STM32中GPIO初始化函数gpio_init,以及相关的电平操作、方向设置、延时函数system_delay_ms和system_delay_us。重点讲解了如何通过这些函数进行GPIO引脚的模式切换和功能设置。
摘要由CSDN通过智能技术生成

void gpio_init (gpio_pin_enum pin, gpio_dir_enum dir, uint8 dat, gpio_mode_enum pinmode)

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     gpio 初始化
// 参数说明     pin         选择的引脚 (可选择范围由 zf_driver_gpio.h 内 gpio_pin_enum 枚举值确定)
// 参数说明     mode        引脚的方向 [GPI/GPIO]
// 参数说明     dat         引脚初始化时设置的电平状态,输出时有效 0:低电平 1:高电平 仅在设置为输出模式时有效
// 参数说明     mode        引脚的模式 (可选择范围由 zf_driver_gpio.h 内 gpio_mode_enum 枚举值确定)
// 返回参数     void
// 使用示例     gpio_init(P00_0, GPO, 1, GPO_PUSH_PULL); // P00_0初始化为GPIO功能、输出模式、输出高电平、推挽输出
// 备注信息     需要特别注意P20_2是不能用于输出的,仅仅只有输入的功能
//-------------------------------------------------------------------------------------------------------------------

typedef enum               // 枚举端口模式   此枚举定义不允许用户修改
{
    GPI_FLOATING_IN,       // 定义管脚浮空输入
    GPI_PULL_UP    ,       // 定义管脚上拉输入
    GPI_PULL_DOWN  ,       // 定义管脚下拉输入

    GPO_PUSH_PULL  ,       // 定义管脚推挽输出
    GPO_OPEN_DTAIN ,       // 定义管脚开漏输出
}gpio_mode_enum;

/*****这个部分在stm32中已经由cubeMX配置好了,用户在cube中选择就好了******/

void system_delay_ms (uint32 time)

//-------------------------------------------------------------------------------------------------------------------
//  函数简介      system 毫秒 延时函数
//  参数说明      time            延时时间  单位:ms
//  返回参数      void
//  使用示例      system_delay_ms(100);  // 延时100毫秒
//-------------------------------------------------------------------------------------------------------------------

/*******相当于32里的HAL_Delay (100); *******/

void system_delay_us (uint32 time)

//-------------------------------------------------------------------------------------------------------------------
//  函数简介      system 微秒 延时函数
//  参数说明      time            延时时间  单位:us
//  返回参数      void
//  使用示例      system_delay_us(100);  // 延时100微秒
//-------------------------------------------------------------------------------------------------------------------
 

gpio_get_level(SWITCH1)

原型: uint8 gpio_get_level (gpio_pin_enum pin)

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     gpio 电平获取
// 参数说明     pin         选择的引脚 (可选择范围由 zf_driver_gpio.h 内 gpio_pin_enum 枚举值确定)
// 返回参数     uint8       引脚当前电平
// 使用示例     uint8 status = gpio_get_level(P00_0);// 获取P00_0引脚电平
// 备注信息
//-------------------------------------------------------------------------------------------------------------------

/******相当于32中的 

GPIO_PinState    HAL_GPIO_ReadPin ( GPIO_TypeDefGPIOx  ,   uint16_t   GPIO_Pin  );

函数返回值:

GPIO_PinState GPIO_PIN_RESET GPIO_PIN_SET

              // GPIO_PIN_RESET = 0GPIO_PIN_SET=1

*********/

gpio_set_level(LED1, led_state);

原型:void gpio_set_level (gpio_pin_enum pin, uint8 dat)

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     gpio 输出设置
// 参数说明     pin         选择的引脚 (可选择范围由 zf_driver_gpio.h 内 gpio_pin_enum 枚举值确定)
// 参数说明     dat         0:低电平 1:高电平
// 返回参数     void
// 使用示例     gpio_set_level(P00_0, 1);// P00_0 输出高电平
// 备注信息
//-------------------------------------------------------------------------------------------------------------------

/****相当于32中的  HAL_GPIO_WritePin  ( GPIOC , GPIO_PIN_13,  GPIO_PIN_RESET );****/

(1.10号更新)整pit的时候突然发现,逐飞是有写与 HAL_GPIO_TogglePin 相似的函数的

void gpio_toggle_level (gpio_pin_enum pin)

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     gpio 翻转电平
// 参数说明     pin         选择的引脚 (可选择范围由 zf_driver_gpio.h 内 gpio_pin_enum 枚举值确定)
// 返回参数     void
// 使用示例     gpio_toggle_level(P00_0);// P00_0引脚电平翻转
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
 

看了看 "zf_driver_gpio.h" 发现还有一个给用户使用的函数是

void gpio_set_dir (gpio_pin_enum pin, gpio_dir_enum dir, gpio_mode_enum pinmode)

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     gpio 方向设置
// 参数说明     pin         选择的引脚 (可选择范围由 zf_driver_gpio.h 内 gpio_pin_enum 枚举值确定)
// 参数说明     dir         引脚的方向   输出:GPO   输入:GPI
// 参数说明     mode        引脚的模式 (可选择范围由 zf_driver_gpio.h 内 gpio_mode_enum 枚举值确定)
// 返回参数     void
// 使用示例     gpio_dir(P00_0, GPO, GPO_PUSH_PULL);// 设置P00_0为推挽输出模式
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
/**********这个函数的存在就意味着,与依赖cube配置下的stm32不同,一个引脚是可以在程序运行的中途切换输入输出模式的,或许阔以搞些花活***********/

/***********这么看来gpio_init其实就相当于 引脚初始化gpio_set_dir + gpio_set_level ********/

  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值