io输入输出引脚配置(HAL库)

推挽:单片机内部与VCC连接,输出高电平【高电平输出能力有限】

开漏:单片机内部与GND连接,输出低电平0v【控制外设,推荐用开漏】 

复用:相当于其他设备的引脚并联在io脚上。 

GPIO_InitTypeDef     GPIO_InitStruct;
参数:Pin    Mode    Pull    Speed    Alternate(复用)
           GPIO_PIN_0      GPIO_PIN_15    GPIO_PIN_All    GPIO_PIN_MASK                                        GPIO_MODE_INPUT                                输入
                GPIO_MODE_OUTPUT_PP            推挽
                GPIO_MODE_OUTPUT_OD            开漏
                GPIO_MODE_AF_PP                复用推挽
                GPIO_MODE_AF_OD                复用开漏
                GPIO_MODE_ANALOG               模拟
                GPIO_MODE_IT_RISING            中断上升沿
                GPIO_MODE_IT_FALLING           中断下降沿
                GPIO_MODE_IT_RISING_FALLING    中断沿
                GPIO_MODE_EVT_RISING           事件上升沿
                GPIO_MODE_EVT_FALLING          事件下降沿
                GPIO_MODE_EVT_RISING_FALLING   事件沿
                    GPIO_NOPULL                无电阻
                    GPIO_PULLUP                上拉电阻
                    GPIO_PULLDOWN              下拉电阻
               GPIO_SPEED_FREQ_LOW        低速     2MHz
               GPIO_SPEED_FREQ_MEDIUM     中速    50MHz
               GPIO_SPEED_FREQ_HIGH       高速    100MHz
               GPIO_SPEED_FREQ_VERY_HIGH  很高    200MHz
#include "stm32f4xx_hal_gpio_ex.h"//复用引脚
GPIO_AF0_RTC_50Hz
GPIO_AF0_MCO
GPIO_AF0_TAMPER
GPIO_AF0_SWJ
GPIO_AF0_TRACE
GPIO_AF1_TIM1
GPIO_AF1_TIM2
GPIO_AF2_TIM3
GPIO_AF2_TIM4
GPIO_AF2_TIM5
GPIO_AF15_EVENTOUT

设置:GPIO_PIN_RESET    GPIO_PIN_SET
  __HAL_RCC_GPIOx_CLK_ENABLE().
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);

///
// HAL_RCC_GetHCLKFreq()/1000                //1ms中断
// HAL_RCC_GetHCLKFreq()/100000 //10us中断
// HAL_RCC_GetHCLKFreq()/1000000    // 1us中断
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);                // 滴答定时器
  /* ϵͳµÎ´ð¶¨Ê±Æ÷ʱÖÓÔ´ */
//时钟源
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  /* ϵͳµÎ´ð¶¨Ê±Æ÷ÖжÏÓÅÏȼ¶ÅäÖà */
//中断优先级
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值