接着就是调用 ZL LED 模块的循环服务函数,它需要周期运行,我一般是把它放在一个 1ms 的时标中断里
/* S T _ S Y S T I C K _ I R Q _ S E R V I C E */
/*-------------------------------------------------------------------------
* 功能:时标服务,在 systick 中断里运行。
* 参数:无
* 返回:无
* 备注:OK.
-------------------------------------------------------------------------*/
void st_systick_irq_service(void)
{
zl_led_flash_loop(); /* zl led loop service */
st_systick_delay_loop(); /* st systick delay loop service */
}
现在就可以使用LED模块了,用户只要调设置函数即可,它有三个参数,见注释
/* Z L _ L E D _ F L A S H _ S E T */
/*-------------------------------------------------------------------------
* 功能:设置LED闪烁参数。
* 参数:1.闪烁次数,等于0表示无限次闪烁;
* 2.亮时间,等于0表示不亮;
* 3.灭时间,等于0表示不灭。
* 返回:无
* 备注:OK.
-------------------------------------------------------------------------*/
void zl_led_flash_set(uint8_t chFlashCnt, uint16_t hwOnTime, uint16_t hwOffTime)
{
/* 更新相关参数 */
s_chFlashCnt = chFlashCnt;
s_hwFlashOnTime = hwOnTime;
s_hwFlashOffTime = hwOffTime;
/* 复位状态机 */
s_chFlashFsmSta = 0;
}