标题: 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. Linux中169.254.0.0/24的路由来自哪里

    在Linux中,发现每次系统启动时,都会将(169.254.0.0/16)路由启动并将其添加到路由表中.但是并不知道这条路由具有什么功能和它到底来自于哪里? [root@master01 ~]# ro ...

  2. [bug] sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'recevie_name' in 'field list'")

    Python Flask 开发购物网站,提交订单时报错 根据提示,检查代码,发现是字段名拼写错误导致,数据库对应的字段是receive_name,误写成了recevie_name 另外要注意,灰色字和 ...

  3. Docker创建镜像以及私有仓库

    Docker的安装及镜像.容器的基本操作详见博客https://blog.51cto.com/11134648/2160257下面介绍Docker创建镜像和创建私有仓库的方法,详细如下: 创建镜像 创 ...

  4. dpkg -S {file} #ubuntu 14.04 rpm -qf {file} #centos 7

    Linux查找命令或组件对应安装包的方法原创FJEagle 最后发布于2017-12-15 19:10:06 阅读数 4603 收藏展开Linux查找命令或组件对应安装包的方法当新搭建服务器或者维护不 ...

  5. ScreenToGif: 屏幕录制神器

    ScreenToGif:一款小众但很好用的屏幕录制神器  牛人干货 2020-01-07 00:23:08 今天干货君给大家介绍一款电脑屏幕录制神器-ScreenToGif . ScreenToGif ...

  6. 034.Python的__str__,__repr__,__bool__ ,__add__和__len__魔术方法

    Python的其他方法 1 __str__方法 触发时机: 使用print(对象)或者str(对象)的时候触发 功能: 查看对象信息 参数: 一个self接受当前对象 返回值: 必须返回字符串类型 基 ...

  7. python基础之centos7源码安装python3

    一.先安装python3所依赖的软件包,非常重要(否则可能会出现python3安装成功,却缺少相应的pip) yum groupinstall "Development tools" ...

  8. 第35章-CentOS7实战

    补充安装软件包 yum -y install vim lrzsz bash-completion telnet nmap 关闭selinux:/etc/selinux/config 关闭防火墙:sys ...

  9. GO语言面向对象05---接口的多态

    package main import "fmt" type Fighter interface { Attack() (bloodloss int) Defend() } /*骑 ...

  10. 201871030136-颜静 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    ​ 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu- ...