GPIO-逐飞TC264库学习与STM32 HAL库对比分析

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_TypeDef *  GPIOx  ,   uint16_t   GPIO_Pin  );


函数返回值:

GPIO_PinState: GPIO_PIN_RESET 、GPIO_PIN_SET

              // GPIO_PIN_RESET = 0;GPIO_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 ********/

物联沃分享整理
物联沃-IOTWORD物联网 » GPIO-逐飞TC264库学习与STM32 HAL库对比分析

发表评论