STM32标准库与HAL库,寄存器对照表
由于STM32标准库出现的时间早,现在市面上STM32的资料很多都是标准库的,但随着HAL库的CUBEMX的广泛使用,两个库之间的效率,内存使用,方便程度不同,为满足不同人的需求,两个库之间的相互转换十分重要。
GPIO部分
获取IO电平状态:
标准库:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //举例: state = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)
HAL库:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //举例: state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7)
定时器部分
使能/失能定时器
标准库:
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) //函数 //举例: TIM_Cmd(TIM2, ENABLE); TIM_Cmd(TIM2, DISABLE);
HAL库:
//1.使能: #define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN)) //宏定义 //举例: __HAL_TIM_ENABLE(&htim14); //2.失能: #define __HAL_TIM_DISABLE(__HANDLE__) //举例: __HAL_TIM_DISABLE(&htim14);
获得计数器计数值:
标准库:
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx) //举例: num = TIM_GetCounter(TIM3);
HAL库:
#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) //举例: __HAL_TIM_GET_COUNTER(&htim14);
寄存器:
//直接CNT寄存器读值 //举例: num = TIM14->CNT;
