/* L E D _ D E M O _ T A S K */
/*-------------------------------------------------------------------------
*功能:延时器测试闪灯,在超级循环中运行。
*参数:无
*返回:无
*备注:未测试。
-------------------------------------------------------------------------*/
void led_demo_task(void)
{
static uint8_t s_chStep = 0;
switch (s_chStep)
{
case 0:
/* 全灭 */
/* 第一次用直接就是超时状态,因为还未设置超时时间 */
if (zl_poll_delay_timeout(DELAY_ID2)) {
zl_poll_delay_set(DELAY_ID2, DELAY_TIME2); //延时3s
LED1 = 1;
LED2 = 1;
s_chStep = 1;
}
break;
case 1:
/* LED1 亮 */
if (zl_poll_delay_timeout(DELAY_ID1)) {
zl_poll_delay_set(DELAY_ID1,DELAY_TIME1); //延时2s
LED1 = 0;
s_chStep = 2;
}
break;
case 2:
/* LED2 亮 */
if (zl_poll_delay_timeout(DELAY_ID0)) {
zl_poll_delay_set(DELAY_ID0, DELAY_TIME0); //1s
对的,代码就是实现这样的效果了,代码我直接复制黏贴了,没注意看显示的效果 了,不好意思,看了一下楼主的代码,是我自己理解错误了,按楼主的代码试了一下,效果很好,非常感谢了。。。
再问一下楼主, 我case0 延时3s,case1 延时2s,case2 延时1s,是下面这么写吗,现象是LED1,LED2同时亮了,我是不是又哪里用错了
#define DELAY_ID0 0
#define DELAY_TIME0 1000
#define DELAY_ID1 1
#define DELAY_TIME1 2000
#define DELAY_ID2 2
#define DELAY_TIME2 3000
/* L E D _ D E M O _ T A S K */
/*-------------------------------------------------------------------------
*功能:延时器测试闪灯,在超级循环中运行。
*参数:无
*返回:无
*备注:未测试。
-------------------------------------------------------------------------*/
void led_demo_task(void)
{
static uint8_t s_chStep = 0;
switch (s_chStep)
{
case 0:
/* 全灭 */
/* 第一次用直接就是超时状态,因为还未设置超时时间 */
if (zl_poll_delay_timeout(DELAY_ID2)) {
zl_poll_delay_set(DELAY_ID2, DELAY_TIME2); //延时3s
LED1 = 1;
LED2 = 1;
s_chStep = 1;
}
break;
case 1:
/* LED1 亮 */
if (zl_poll_delay_timeout(DELAY_ID1)) {
zl_poll_delay_set(DELAY_ID1,DELAY_TIME1); //延时2s
LED1 = 0;
s_chStep = 2;
}
break;
case 2:
/* LED2 亮 */
if (zl_poll_delay_timeout(DELAY_ID0)) {
zl_poll_delay_set(DELAY_ID0, DELAY_TIME0); //1s
LED2 = 0;
s_chStep = 0;
}
break;
default:
break;
}
}
一周热门 更多>