- 打卡等级:以坛为家I
- 打卡总天数:306
- 最近打卡:2025-05-05 09:15:18
中级会员
- 积分
- 411
|
发表于 2024-6-16 00:09:01
|
显示全部楼层
我试做一个项目,用的是STC32G实验箱9.62
数码管显示时间:小时-分钟-秒钟(显示格式:xx-xx-xx)
设想在设置时间时,设置的地方是闪烁的,用全局变量which_hms来选择,为0时小时闪烁,为1时分钟闪烁,为2时秒种闪烁
用ADC按键来操作:键1:RTC暂停;键2:RTC开启; 键3、4、5改变which_hms的值
uCreateTask(TASK_C,3,100,0,0)
{
u16 key_data;
key_data=uRecvFetion(FETION_A,~0);
switch (key_data)
{
case 1:
//关闭RTC
RTCCR=0x00;
break;
case 2:
//开启RTC
RTCCR = 0x01; //RTC使能
while(RTCCFG & 0x01);
break;
case 3:
case 4:
case 5:
which_hms=key_data-3;
break;
}
uEndTasking;
}
如上操作,没有问题。
但是,如果用按键3改变闪烁位置时,出现了问题,仿佛which_hms的值一直在改变(没动按键),程序如下:
uCreateTask(TASK_C,3,100,0,0)
{
u16 key_data;
key_data=uRecvFetion(FETION_A,~0);
switch (key_data)
{
case 1:
//关闭RTC
RTCCR=0x00;
break;
case 2:
//开启RTC
RTCCR = 0x01; //RTC使能
while(RTCCFG & 0x01);
break;
case 3:
which_hms++;
if(which_hms>2) which_hms=0;
break;
}
uEndTasking;
}
同样的方法我用FreeRTOS试了一下,它这个倒是正常,不知CosyOS什么地方有问题?
|
|