stm32f103c8t6HAL库systick
时间: 2025-03-25 07:10:53 浏览: 42
### STM32F103C8T6 HAL库 SysTick 示例代码与配置教程
SysTick 是 ARM Cortex-M 系列微控制器中的一个重要定时器模块,用于提供精确的时间基准。在使用 STM32F103C8T6 的 HAL 库时,可以通过自定义 `SysTick_Handler` 函数来实现时间管理功能[^4]。
以下是基于 HAL 库的 SysTick 配置方法以及示例代码:
#### 1. 配置 SysTick 中断
在 STM32CubeMX 工具中生成项目时,默认会启用 SysTick 定时器作为 FreeRTOS 或其他实时操作系统的计时基础。如果未自动配置,则需手动调整如下参数:
- **System Core → NVIC**: 启用 SysTick 中断。
- **System Core → Systick Timer**: 设置中断优先级并确认其频率满足需求。
#### 2. 自定义 SysTick 处理函数
通过重写默认的 `SysTick_Handler` 来适配特定应用逻辑。例如,在嵌入式操作系统环境中调用 RTOS 提供的任务调度接口。
```c
// 在 stm32f1xx_it.c 文件中重新定义 SysTick 中断处理程序
void SysTick_Handler(void) {
/* 用户可在此处添加初始化代码 */
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) {
xPortSysTickHandler(); // 调用 FreeRTOS 的系统滴答处理器
}
}
```
上述代码片段展示了如何集成 SysTick 和 FreeRTOS 操作系统之间的交互机制。
#### 3. 初始化 SysTick 并启动
为了确保 SysTick 正常工作,还需要对其进行适当初始化。通常情况下,这部分由 HAL 库内部完成;但如果需要更精细控制,则可以显式调用以下 API:
```c
#include "stm32f1xx_hal.h"
/**
* @brief 初始化 SysTick 计数器
* @param ticksPerSecond - 每秒触发次数(即期望频率)
*/
void MX_SysTick_Init(uint32_t ticksPerSecond){
if (HAL_SYSTICK_Config(SystemCoreClock / ticksPerSecond) != HAL_OK){
Error_Handler();
}
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); // 设置最高优先级
}
int main(void){
HAL_Init();
SystemClock_Config(); // 配置系统时钟
MX_GPIO_Init(); // GPIO 初期化
MX_SysTick_Init(1000);// 设定每毫秒一次中断
while (1){
// 主循环体
}
}
```
此部分实现了对硬件资源的基础设定,并指定了每次中断间隔为 1 ms。
---
###
阅读全文
相关推荐


















