STM32标准库与HAL库,寄存器对照表


由于STM32标准库出现的时间早,现在市面上STM32的资料很多都是标准库的,但随着HAL库的CUBEMX的广泛使用,两个库之间的效率,内存使用,方便程度不同,为满足不同人的需求,两个库之间的相互转换十分重要。

1.本文提供部分常用函数作为参考,将实现功能相同的函数放在一起,具体定义和细微差异可以自行在编译器中搜索。
2.本文随作者工作情况不断更新。

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;

猜你喜欢

转载自blog.csdn.net/qq_46135352/article/details/107442046