HAL_HAL常用库函数

本文深入解析HAL库中常用的函数,包括延时、GPIO操作、UART DMA传输、定时器PWM及中断回调等,为STM32开发者提供全面的函数使用指南。

HAL常用库函数

HAL_Delay(uint32_t);

HAL_GPIO_WritePin(GPIOX,GPIO_PIN_X,GPIO_PIN_RESET);
HAL_GPIO_TogglePin(GPIOX,GPIO_PIN_X);
HAL_GPIO_ReadPin(GPIOX,GPIO_PIN_X)

HAL_UART_Receive_DMA(&huartX,uint8_t指针,sizeof(uint8_t数组));
HAL_UART_Transmit_DMA(&huartX,uint8_t指针,sizeof(uint8_t数组));

HAL_TIM_Base_Start_IT(&htimX);

HAL_TIM_PWM_Start(&htimX,TIM_CHANNEL_X);
__HAL_TIM_SET_COMPARE(&htindleTypeDef *huart)

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
mX, TIM_CHANNEL_X,CCR目标值);
TIMX->CCRX= CCR目标值;

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)

### 用途 `__HAL_TIM_GetAutoreload` 是 STM32 HAL 库中的一个宏,用于获取定时器的自动重载寄存器(TIMx_ARR)的值。该寄存器决定了定时器的周期,即定时器在一次计数周期中达到的最大值。通过读取这个值,可以了解当前定时器的周期设置[^1]。 ### 使用方法 `__HAL_TIM_GetAutoreload` 宏接受一个指向 `TIM_HandleTypeDef` 结构体的指针作为参数,并返回当前自动重载寄存器的值。其基本用法如下: ```c uint32_t autoReloadValue = __HAL_TIM_GetAutoreload(&htim2); ``` 在这个例子中,`htim2` 是一个 `TIM_HandleTypeDef` 类型的变量,代表了一个定时器实例。调用 `__HAL_TIM_GetAutoreload` 后,`autoReloadValue` 将包含定时器 TIM2 的自动重载寄存器的值。 ### 注意事项 - 在调用此宏之前,确保定时器已经被正确初始化。 - 此宏不进行任何参数检查,因此需要确保传入的指针是有效的。 - 该宏是内联的,因此它的执行速度较快,适合在需要频繁读取自动重载值的情况下使用[^1]。 ### 示例代码 以下是一个简单的示例,展示了如何使用 `__HAL_TIM_GetAutoreload` 宏来获取定时器的自动重载值: ```c #include "stm32f4xx_hal.h" TIM_HandleTypeDef htim2; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_TIM2_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM2_Init(); // Start the TIM2 timer HAL_TIM_Base_Start(&htim2); // Get the auto-reload value uint32_t autoReloadValue = __HAL_TIM_GetAutoreload(&htim2); // Use the autoReloadValue as needed while (1) { // Main loop } } static void MX_TIM2_Init(void) { __HAL_RCC_TIM2_CLK_ENABLE(); htim2.Instance = TIM2; htim2.Init.Prescaler = 83; // Prescaler value htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 999; // Auto-reload value htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim2); } ``` 在上述代码中,`MX_TIM2_Init` 函数初始化了 TIM2 定时器,并设置了其自动重载值为 999。在 `main` 函数中,启动了定时器,并通过 `__HAL_TIM_GetAutoreload` 宏获取了自动重载值并存储在 `autoReloadValue` 变量中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值