标题: Arduino库和STM32的寄存器、标准库、HAL库、LL库开发比较之GPIO
作者: 梦幻之心星 sky-seeker@qq.com
标签: [#Arduino,#STM32,#库,#开发]
日期: 2021-07-01

背景说明

STM32开发方式

  • 寄存器(STM32Snippets):直接操作寄存器
  • SPL库(Standard Peripheral Libraries):标准外设库,将寄存器操作封装成函数
  • HAL库(Hardware Abstraction Layer):硬件抽象层,将功能操作封装成函数
  • LL库(Low Layer):底层库,直接操作寄存器

操作说明

操作步骤

Arduino

  1. 配置引脚
  2. 操作引脚

STM32

  1. 配置时钟
  2. 配置引脚
  3. 操作引脚

操作方法

Arduino

//读操作
pinMode(3,INPUT);
digitalRead(3); //写操作
pinMode(3,OUTPUT);
digitalWrite(3);

STM32

寄存器
//1.配置时钟
RCC_APB2ENR |= (1<<3);
//2.配置引脚
GPIOB_CRL &= ~( 0x0F<< (4*0));
GPIOB_CRL |= (1<<4*0);
//3.操作引脚
GPIOB_ODR &= (0<<0);
标准库
//1.配置时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//2.配置引脚
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//3.操作引脚
ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);
HAL库(支持图形化初始配置)
//1.配置时钟
//宏定义方式
__HAL_RCC_GPIOA_CLK_ENABLE();
//2.配置引脚
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
//3.操作引脚
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
LL库(支持图形化初始配置)
//1.配置时钟
//该函数位于stm32f1xx_ll_bus.h
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
//2.配置引脚
LL_GPIO_InitTypeDef LL_GPIO_InitStructure;
LL_GPIO_InitStructure.Pin = LL_GPIO_PIN_1;
LL_GPIO_InitStructure.Mode = LL_GPIO_MODE_OUTPUT;
LL_GPIO_InitStructure.Speed = LL_GPIO_SPEED_FREQ_LOW;
LL_GPIO_InitStructure.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
LL_GPIO_InitStructure.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(GPIOA, &LL_GPIO_InitStructure);
//3.操作引脚
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_1);

GPIO函数库

Arduino 数字 I/O

digitalRead(pin)
digitalWrite(pin, value)
pinMode(pin, mode)

STM32

标准库(STM32F103xx)
  • 复位和时钟设置(RCC)
    void RCC_DeInit(void);
    void RCC_HSEConfig(uint32_t RCC_HSE);
    ErrorStatus RCC_WaitForHSEStartUp(void);
    void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
    void RCC_HSICmd(FunctionalState NewState);
    void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);
    void RCC_PLLCmd(FunctionalState NewState);
    void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
    uint8_t RCC_GetSYSCLKSource(void);
    void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
    void RCC_PCLK1Config(uint32_t RCC_HCLK);
    void RCC_PCLK2Config(uint32_t RCC_HCLK);
    void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
    void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);
    void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
    void RCC_LSEConfig(uint8_t RCC_LSE);
    void RCC_LSICmd(FunctionalState NewState);
    void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
    void RCC_RTCCLKCmd(FunctionalState NewState);
    void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
    void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
    void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
    void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
    void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
    void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
    void RCC_BackupResetCmd(FunctionalState NewState);
    void RCC_ClockSecuritySystemCmd(FunctionalState NewState);
    void RCC_MCOConfig(uint8_t RCC_MCO);
    FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
    void RCC_ClearFlag(void);
    ITStatus RCC_GetITStatus(uint8_t RCC_IT);
    void RCC_ClearITPendingBit(uint8_t RCC_IT);
  • 通用输入/输出(GPIO)
    void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    void GPIO_AFIODeInit(void);
    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
    uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
    void GPIO_EventOutputCmd(FunctionalState NewState);
    void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
    void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
    void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
HAL库
  • 复位和时钟设置(RCC)
    HAL_StatusTypeDef HAL_RCC_DeInit(void);
    HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
    HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);
    void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);
    void HAL_RCC_EnableCSS(void);
    void HAL_RCC_DisableCSS(void);
    uint32_t HAL_RCC_GetSysClockFreq(void);
    uint32_t HAL_RCC_GetHCLKFreq(void);
    uint32_t HAL_RCC_GetPCLK1Freq(void);
    uint32_t HAL_RCC_GetPCLK2Freq(void);
    void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
    void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency);
    void HAL_RCC_NMI_IRQHandler(void);
    void HAL_RCC_CSSCallback(void);
    HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
    void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
    uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);
  • 通用输入/输出(GPIO)
    void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
    void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
    GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
    void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); void HAL_GPIOEx_ConfigEventout(uint32_t GPIO_PortSource, uint32_t GPIO_PinSource);
    void HAL_GPIOEx_EnableEventout(void);
    void HAL_GPIOEx_DisableEventout(void);
LL库
  • 复位和时钟设置(RCC)

    void        LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks);
    uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource);
    uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource);
    __STATIC_INLINE void LL_RCC_HSE_EnableCSS(void)
    __STATIC_INLINE void LL_RCC_HSE_EnableBypass(void)
    __STATIC_INLINE void LL_RCC_HSE_DisableBypass(void)
    __STATIC_INLINE void LL_RCC_HSE_Enable(void)
    __STATIC_INLINE void LL_RCC_HSE_Disable(void)
    __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void)
    __STATIC_INLINE uint32_t LL_RCC_HSE_GetPrediv2(void)
    __STATIC_INLINE void LL_RCC_HSI_Enable(void)
    __STATIC_INLINE void LL_RCC_HSI_Disable(void)
    __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void)
    __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void)
    __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value)
    __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void)
    __STATIC_INLINE void LL_RCC_LSE_Enable(void)
    __STATIC_INLINE void LL_RCC_LSE_Disable(void)
    __STATIC_INLINE void LL_RCC_LSE_EnableBypass(void)
    __STATIC_INLINE void LL_RCC_LSE_DisableBypass(void)
    __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void)
    __STATIC_INLINE void LL_RCC_LSI_Enable(void)
    __STATIC_INLINE void LL_RCC_LSI_Disable(void)
    __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void)
    __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source)
    __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void)
    __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler)
    __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler)
    __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler)
    __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void)
    __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void)
    __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void)
    __STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource)
    __STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource)
    __STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ADCxSource)
    __STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx)
    __STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t ADCx)
    __STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source)
    __STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void)
    __STATIC_INLINE void LL_RCC_EnableRTC(void)
    __STATIC_INLINE void LL_RCC_DisableRTC(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void)
    __STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void)
    __STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void)
    __STATIC_INLINE void LL_RCC_PLL_Enable(void)
    __STATIC_INLINE void LL_RCC_PLL_Disable(void)
    __STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void)
    __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLMul)
    __STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource)
    __STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void)
    __STATIC_INLINE uint32_t LL_RCC_PLL_GetMultiplicator(void)
    __STATIC_INLINE uint32_t LL_RCC_PLL_GetPrediv(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void)
    __STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void)
    __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void)
    __STATIC_INLINE void LL_RCC_ClearResetFlags(void)
    __STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void)
    __STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void)
    __STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void)
    __STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void)
    __STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void)
    __STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void)
    __STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void)
    __STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void)
    __STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void)
    __STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void)
    __STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void)
  • 通用输入/输出(GPIO)

    ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx);
    ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct);
    void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);
    __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode)
    __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin)
    __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed)
    __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin)
    __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t OutputType)
    __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin)
    __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull)
    __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin)
    __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx)
    __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx)
    __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue)
    __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx)
    __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI1(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI1(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI1(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_I2C1(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_I2C1(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_I2C1(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART1(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART1(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART1(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART2(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART2(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART2(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART3(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial_USART3(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART3(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM1(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM2(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial2_TIM2(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial1_TIM2(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM2(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM3(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM3(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM3(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM4(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM4(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM4(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial1_CAN1(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial2_CAN1(void)
    __STATIC_INLINE void LL_GPIO_AF_RemapPartial3_CAN1(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_PD01(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_PD01(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_PD01(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM5CH4(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM5CH4(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM5CH4(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ETH(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_CAN2(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_CAN2(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CAN2(void)
    __STATIC_INLINE void LL_GPIO_AF_Select_ETH_RMII(void)
    __STATIC_INLINE void LL_GPIO_AF_Select_ETH_MII(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGREG(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGREG(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGREG(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGREG(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SWJ(void)
    __STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NONJTRST(void)
    __STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NOJTAG(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SWJ(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI3(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI3(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI3(void)
    __STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_USB(void)
    __STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH_PTP_PPS(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH_PTP_PPS(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM9(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM9(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM9(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM10(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM10(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM10(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM11(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM11(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM11(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM13(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM13(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM13(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM14(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM14(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM14(void)
    __STATIC_INLINE void LL_GPIO_AF_Disconnect_FSMCNADV(void)
    __STATIC_INLINE void LL_GPIO_AF_Connect_FSMCNADV(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM15(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM15(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM15(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM16(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM16(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM16(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM17(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM17(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM17(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_CEC(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_CEC(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CEC(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1DMA(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1DMA(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM1DMA(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM67DACDMA(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM67DACDMA(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM12(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM12(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM12(void)
    __STATIC_INLINE void LL_GPIO_AF_EnableRemap_MISC(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableRemap_MISC(void)
    __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_MISC(void)
    __STATIC_INLINE void LL_GPIO_AF_ConfigEventout(uint32_t LL_GPIO_PortSource, uint32_t LL_GPIO_PinSource)
    __STATIC_INLINE void LL_GPIO_AF_EnableEventout(void)
    __STATIC_INLINE void LL_GPIO_AF_DisableEventout(void)
    __STATIC_INLINE void LL_GPIO_AF_SetEXTISource(uint32_t Port, uint32_t Line)
    __STATIC_INLINE uint32_t LL_GPIO_AF_GetEXTISource(uint32_t Line)

相关说明









参考资料

  • 《STM32F103xB_User_Manual.chm》(Drivers\STM32F1xx_HAL_Driver)
  • 《stm32f10x_stdperiph_lib_um.chm》(STM32F1xx_DFP\Device\StdPeriph_Driver)
  • 《STM32固件库使用手册(中文)》
  • 《零死角玩转STM32—F103霸道》
  • 《STM32 HAL库开发实战指南——F103系列》

版权声明:本文为「梦幻之心星」原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。


博客园地址:https://www.cnblogs.com/Sky-seeker

微信公众号:关注微信公众号,获取即时推送


Arduino库和STM32的寄存器、标准库、HAL库、LL库开发比较之GPIO的更多相关文章

  1. STM32之HAL库、标准外设库、LL库(STM32 Embedded Software)-(转载)

    STM32 Embedded Software  工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是 ...

  2. STM32之HAL库、标准外设库、LL库

    标准外设库(Standard Peripherals Library),应该是最早推出的版本,以前用STM32F103的时候,用的多 HAL(Hardware Abstraction Layer),硬 ...

  3. STM32中STD、HAL、LL库比较

    ST为开发者提供了标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST新添加的,随HAL源码包一起提供,目前支持的芯片也偏少. 标准外设库(Standard Peri ...

  4. Arduino+ESP32 之 驱动GC9A01圆形LCD(一),基于Arduino_GFX库

    最近买了一块圆形屏幕,驱动IC是GC9A01,自己参考淘宝给的stm32的驱动例程, 在ubuntu下使用IDF开发ESP32,也在windows的vscode内安装IDF开发ESP32,虽然都做到了 ...

  5. 学习使用 ARM 的 math 库,据说 速度比C标准库 自带的 快 几十倍 到几百倍

    1.首先 添加 库 到 工程 ,路径 如下 C:\Keil\ARM\CMSIS\Lib\ARM 2.包含头文件以及在 工程里 添加 头文件 路径如下  C:\Keil\ARM\CMSIS\Includ ...

  6. STM32串口寄存器操作(转)

    源:STM32串口寄存器操作 //USART.C /************************************************************************** ...

  7. Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  8. Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  9. Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

随机推荐

  1. 如何利用CRM系统打通营销全渠道?

    企业经常通过不同渠道组织各种形式的营销推广,可惜,这些营销推广的效果往往差强人意. 相关研究表明,很多营销推广不理想的主要原因是不同营销渠道之间没有打通数据,不清楚每个营销渠道或营销策划的投入产出.推 ...

  2. HUGO 创建属于自己的博客

    Hugo 拥有超快的速度,强大的内容管理和强大的模板语言,使其非常适合各种静态网站.可以轻松安装在macOS,Linux,Windows等平台上,在开发过程中使用LiveReload可即时渲染更改 一 ...

  3. [bug] redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused

    参考 https://www.geek-share.com/detail/2684728161.html

  4. [Linux] Shell 脚本实例(超实用)

    文件操作 为文件(test.sh)增加执行权限 chmod +x test.sh 列出当前文件夹下所有文件(每行输出一个) 1 #!/bin/bash 2 dir=`ls ./` 3 for i in ...

  5. Linux Centos7设置UTF-8编码,防止中文乱码

    Linux Centos7设置UTF-8编码,防止中文乱码 # localeLANG=zh_CN.gb2312LC_CTYPE="zh_CN.gb2312"LC_NUMERIC=& ...

  6. xsos:一个在Linux上阅读SOSReport的工具

    xsos:一个在Linux上阅读SOSReport的工具 时间 2019-05-23 14:36:29  51CTO 原文  http://os.51cto.com/art/201905/596889 ...

  7. 云计算OpenStack---云计算、大数据、人工智能(14)

    一.互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS.PAAS.SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用.给我 ...

  8. IDEA 打包和导入 Jar 包

    Jar 包介绍 Jar 包 ( Java Archive,Java 归档文件) 是与平台无关的压缩文件格式,它允许将多个 Java 源文件编译生成的 class 文件(即字节码文件)打包成一个压缩文件 ...

  9. gpgj - 06.估值分析举例

    06.估值分析举例 1.举个栗子-贵州茅台的护城河 品牌效益高 只有高档产品 不卖中低档,不会拉低公司收入 {   "question": "我们来复习一下护城河要如何分 ...

  10. python文件处理(对比和筛选)

    #!/user/bin/python #!coding=utf-8 # -*- coding: utf-8 -*- # 2017-9-25 #author:jingwenshuai import sy ...