大锤子
发表于 2024-11-9 00:56:13
Tiny RTOS 学习第一篇
完全按照楼主的教程,使用自制学习机验证简单流水灯测试程序:
流水灯原理图:
按键原理图:
测试功能:
程序初始功能为左到右的流水灯。
按键1: 左向右的流水灯;
按键2: 右向左的流水灯;
按键3: 三个灯闪烁;
代码:
Task0:
/* LED控制任务*/
void Task0(void)
{
for(;;)
{
if(mode == 1) {
P35 = 0; //LED On
OSDelay(t) ; // 任务延时
P35 = 1; //LED Off
P36 = 0; //LED On
OSDelay(t) ;
P36 = 1; //LED Off
P37 = 0; //LED On
OSDelay(t) ;
P37 = 1; //LED Off
} else if (mode == 2) {
P37 = 0;
OSDelay(t) ; // 任务延时
P37 = 1;
P36 = 0; //LED On
OSDelay(t) ;
P36 = 1; //LED Off
P35 = 0; //LED On
OSDelay(t) ; // 任务延时
P35 = 1; //LED Off
} else {
P35 = 0;
P36 = 0;
P37 = 0;
OSDelay(t) ; // 任务延时
P35 = 1;
P36 = 1;
P37 = 1;
OSDelay(t) ; // 任务延时
}
}
}
/* 按键检测 任务 */
void Task1(void)
{
static unsigned char Key1Cnt ;
unsigned char newKey;
for(;;)
{
if(!P64 || !P65 || !P66)
{
if(!P64) {
newKey = KEY1;
} else if (!P65) {
newKey = KEY2;
} else {
newKey = KEY3;
}
if(oldKey != newKey) {
Key1Cnt = 1;
oldKey = newKey;
}
if(Key1Cnt < 0xff) Key1Cnt ++ ;
}
else
{
Key1Cnt = 0 ;
}
if(Key1Cnt == 250)
{
OSEnterCritical() ;
mode = newKey;
OSExitCritical() ;
}
OSTaskSuspend() ;// 任务挂起
}
}
实验效果:
大叶子
发表于 2024-11-9 08:26:45
本帖最后由 大叶子 于 2024-11-9 08:28 编辑
大锤子 发表于 2024-11-9 00:56
Tiny RTOS 学习第一篇
看这面板是,游戏机?
展示一下,游戏机的内容吧,我挺好奇的。
大锤子
发表于 2024-11-9 17:25:17
大叶子 发表于 2024-11-9 08:26
看这面板是,游戏机?
展示一下,游戏机的内容吧,我挺好奇的。
不是游戏机, 温湿度计。 学习用的。
大叶子
发表于 2024-11-10 14:05:07
大锤子 发表于 2024-11-9 17:25
不是游戏机, 温湿度计。 学习用的。
有游戏机颜值的温湿度计,是不错呢
大锤子
发表于 2024-11-10 15:35:05
它里边有蓝牙模块,语音模块,温湿度模块。 还有flash。 外部有5个按键, 背部还有一个P32用于Usb烧录程序的, 如果强行做成游戏机也是可以的。{:4_167:}
wlhet
发表于 2024-11-11 08:50:46
大锤子 发表于 2024-11-10 15:35
它里边有蓝牙模块,语音模块,温湿度模块。 还有flash。 外部有5个按键, 背部还有一个P32用于Usb烧录程序 ...
那就做个?我来复刻
hande5
发表于 2024-11-11 09:49:04
学习了
大锤子
发表于 2024-11-14 09:35:14
大佬这个OS有最新版本吗? 和新例程吗?
hande5
发表于 2024-11-14 11:41:08
学习一下
fanxsp
发表于 2024-11-15 07:16:34
本帖最后由 fanxsp 于 2024-11-15 09:30 编辑
大锤子 发表于 2024-11-14 09:35
大佬这个OS有最新版本吗? 和新例程吗?
有新版本,新增一些功能,有空的时候,整理一下再上传。
我手头只有一块开天斧实验板,只能做一些很简单的例程。
关于例程,你有什么建议?