HAL库常用函数使用介绍--HAL_GPIO

HAL_GPIO_Init

//初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)

HAL_GPIO_DeInit

//将初始化之后的引脚恢复成默认的状态–各个寄存器复位时的值
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
例:HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);

HAL_GPIO_ReadPin

//读取我们想要知道的引脚的电平状态、函数返回值为0或1。
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:pin_State = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9);

HAL_GPIO_WritePin

//给某个引脚写0或1,但是不要理解成,写1就是使能之类的意思,有些寄存器写1是擦除的意思
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
例:HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9,GPIO_PIN_RESET)

HAL_GPIO_TogglePin

//翻转某个引脚的电平状态
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9);

HAL_GPIO_LockPin

//如果一个管脚的当前状态是1,读管脚值使用锁定,当这个管脚电平变化时保持锁定时的值,直到重置才改变
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:

HAL_StatusTypeDef hal_State;
hal_State = HAL_GPIO_LockPin(GPIOF, GPIO_PIN_9);

HAL_GPIO_EXTI_IRQHandler

//这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面要介绍的回调函数。实际调用的是下边的中断回调函数
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
例:HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);

HAL_GPIO_EXTI_Callback

//中断回调函数,可以理解为中断函数具体要响应的动作。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
例:HAL_GPIO_EXTI_Callback(GPIO_Pin);

  • 41
    点赞
  • 272
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
【RT-Thread作品秀】Art-pi机械臂控制作者:李志青 概述5G时代物联走入更多行业与领域,使用广和通的L610在模块,通过MQTT与中国移动onenet互联,也尝试搭建了本地MQTT服务器,适合内部布署,其再加入柿饼派两块,结合体感手套与机械臂,数据进行通讯,实现远程控制。 开发环境硬件:art-pi,广和通4G模块,柿饼派,体感手套,SG90舵机 RT-Thread版本:4.0.3 开发工具及版本:RT-Thread Studio, STM32CubeMX, Arduino IDE1.8.5,PersimmonUIBuilder RT-Thread使用情况概述ulog:日志标红打印,更显眼 pahomqtt:与中国移动OneNet进行通讯 at_device:建立与广和通L610通讯 onnet:加密授权与中国移动OneNet配置信息一致 pwm:控制sg90舵机 uart:运用了三个,分别是uart1(控制台使用),uart4(与广和通L610通讯),uart6(接收柿饼派串口信息) 硬件框架请见附件word文件 体感手套使用arduino板子,串口通讯至第一块柿饼派 第一块柿饼派通过MQTT通讯到第二块柿饼派 第二块柿饼派通过串口与art-pi通讯 Art-pi与舵机,广和通L610通讯相互 软件框架说明请见附件word文件开启串口并指定相应引脚 开启多个组件,并做具体配置 开启线程 开启指定GPIO并指定引脚 软件模块说明具体软件模块: Uart串口通讯主要在main,c: /*数据解析线程---发送串口指令*/ staticvoiddata_parsing(void) { charch; chardata[ONE_DATA_MAXLEN]; staticchari = 0; while(1) { ch = uart_sample_get_char(); rt_device_write(serial, 0, &ch, 1); if(ch == DATA_CMD_END) { data[i++] ='\0'; rt_kprintf("data=%s\r\n",data); i = 0; if(strcmp(data,"0") == 0) { UserPWM_0_5msStart();// 0度 } if(strcmp(data,"45") == 0) { UserPWM_1_0msStart();// 45度 } if(strcmp(data,"90") == 0) { UserPWM_1_5msStart();// 90度 } if(strcmp(data,"135") == 0) { UserPWM_2_0msStart();// 135度 } if(strcmp(data,"180") == 0) { UserPWM_2_5msStart();// 180度 } //UserPWM_0_5msStart(); continue; } i = (i >= ONE_DATA_MAXLEN-1) ? ONE_DATA_MAXLEN-1 : i; data[i++] = ch; } } Pwm控制主要在drv_pwm.c: /*封装舵机控制函数,即pwm */ voidUserPWM_Init(void) { MX_TIM3_Init(); } MSH_CMD_EXPORT(UserPWM_Init, user pwm init); voidUserPWM_Stop(void) { HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); } MSH_CMD_EXPORT(UserPWM_Stop, user pwm stop); voidUserPWM_0_5msStart(void) { HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,500); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); } MSH_CMD_EXPORT(UserPWM_0_5msStart, angle zero); voidUserPWM_1_0msStart(void) { HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,1000); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); } MSH_CMD_EXPORT(UserPWM_1_0
### 回答1: hal_gpio_togglepin函数是一个用于控制GPIO引脚状态的函数。它可以将指定的GPIO引脚状态从高电平切换到低电平,或从低电平切换到高电平。该函数的详细解释如下: 函数名称:hal_gpio_togglepin 函数功能:切换GPIO引脚状态 函数参数: - gpio_pin:GPIO引脚号 - gpio_pin_state:GPIO引脚状态(高电平或低电平) 函数返回值:无 函数说明:该函数用于切换指定GPIO引脚的状态,可以将GPIO引脚状态从高电平切换到低电平,或从低电平切换到高电平。 使用示例: ``` #include "hal_gpio.h" int main(void) { hal_gpio_init(); hal_gpio_setpinmode(GPIO_PIN_1, GPIO_MODE_OUTPUT); hal_gpio_setpinstate(GPIO_PIN_1, GPIO_PIN_RESET); hal_gpio_togglepin(GPIO_PIN_1); return ; } ``` 以上示例代码中,首先调用hal_gpio_init函数初始化GPIO模块,然后设置GPIO引脚1为输出模式,并将其状态设置为低电平。接着调用hal_gpio_togglepin函数GPIO引脚1的状态从低电平切换到高电平。 ### 回答2: hal_gpio_togglepin是一个很常用函数,它是在HAL库中定义的GPIO操作函数之一。在使用这个函数时,我们可以通过改变GPIO引脚的电平,来进行普通IO口控制。 这个函数的语法比较简单,它只需要传递一个参数,这个参数代表想要操作的GPIO引脚。在执行这个函数时,它会检查之前是否配置过相应的GPIO,然后在切换GPIO引脚的电平之前,会先将该PIN设置为输出模式,最后再将该PIN的电平设置为相反值。 使用hal_gpio_togglepin函数需要注意以下几个问题: 1.配置GPIO: 在使用hal_gpio_togglepin函数之前,需要先进行GPIO的配置。具体的配置方法可以参考HAL库的相关文档,根据不同的场景选择合适的配置。 2.参数传递: 在使用hal_gpio_togglepin函数时,需要传递一个参数,这个参数代表所要操作的GPIO引脚。在传递参数之前,需要明确需要操作哪些GPIO引脚,可以参考相关文档。 3.改变GPIO电平: hal_gpio_togglepin函数的作用就是改变GPIO引脚的电平,可以通过这个函数实现任意GPIO引脚的控制。 总之,使用hal_gpio_togglepin函数需要了解并掌握GPIO的相关知识和HAL库使用方法,这样才能顺利使用这个函数实现对GPIO引脚的控制。 ### 回答3: hal_gpio_togglepin函数是一个基于HAL库GPIO引脚反转函数。通过这个函数,可以轻松实现GPIO引脚的反转输出操作。 首先,需要在程序中添加头文件 "stm32f4xx_hal_gpio.h",来声明该函数。 然后,通过传入参数指定要反转的GPIO引脚,例如:GPIOC_PIN_13,表示要反转的引脚为C13引脚。 接下来,需要调用该函数来实现引脚状态的反转。该函数执行后,如果引脚原来是高电平,则变成低电平,如果原来是低电平,则变成高电平。 该函数的返回值为void,与其他HAL库函数类似,不需要额外处理。 需要注意的是,该函数只适用于GPIO输出引脚,如果尝试在输入引脚上使用函数的话,将会导致未知的错误和不可预料的结果。 在使用hal_gpio_togglepin函数之前,需要设置GPIO引脚的初始状态。如果默认初始状态为高电平,则调用hal_gpio_togglepin函数将会把引脚状态变为低电平;如果默认初始状态为低电平,则调用该函数状态将变为高电平。 总之,hal_gpio_togglepin函数可以轻松实现引脚状态的反转,并且比手动编写代码更加简便,同时也可以提高程序编写的效率,因此是值得推荐的一个函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值