在 APM32M3514 电机通用评估板 上使用 SysTick 定时器来实现计划任务LED 闪烁。SysTick 是 Cortex-M 内核提供的一个系统定时器,通常用于操作系统的任务调度或简单的定时任务。
以下是 SysTick 定时器的计划任务实现 LED 闪烁控制任务。
配置 SysTick 定时器 配置 SysTick 定时器,设置其定时周期。 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = ticks - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
LED 控制函数 实现 LED 的切换功能。 if (sysTick >= 1000)
{
sysTick = 0; // 重置计时器
static uint8_t ledState = 0; // 用于记录 LED 的当前状态
if (ledState == 0)
{
APM_MINI_LEDOn(LED2); // 打开 LED
ledState = 1; // 更新状态为开
}
else
{
APM_MINI_LEDOff(LED2); // 关闭 LED
ledState = 0; // 更新状态为关
}
}
实现效果
|