📄 main.c
字号:
#include "config.h"
//#include "stdlib.h"
#include "spi.h"
#define DS2 (1 << 24) // P1.24控制DS2
#define DS3 (1 << 8) // P0.25控制DS3
#define Task0StkLengh 64 // 定义用户任务0的堆栈长度
#define TaskDS2StkSize 128 // 定义任务TaskDS2的堆栈长度
#define TaskDS3StkSize 128 // 定义任务TaskDS3的堆栈长度
#define TaskDS4StkSize 128 // 定义任务TaskDS3的堆栈长度
OS_STK Task0Stk [Task0StkLengh]; // 定义用户任务0的堆栈
OS_STK TaskDS2Stk [TaskDS2StkSize]; // 定义任务TaskDS2的堆栈
OS_STK TaskDS3Stk [TaskDS3StkSize]; // 定义任务TaskDS3的堆栈
OS_STK TaskDS4Stk [TaskDS4StkSize]; // 定义任务TaskDS3的堆栈
void Task0(void *pdata); // Task0 任务0
void TaskDS2(void *data); // 任务TaskDS2
void TaskDS3(void *data); // 任务TaskDS3
extern OS_EVENT *Sem1; // 定义一个信号量
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :c语言的主函数,由它启动多任务环境
*********************************************************************************************************
*/
int main (void)
{
OSInit ();
Sem1 = OSSemCreate(1); // 建立信号量
OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], 2);
OSStart ();
return 0;
}
/*
********************************************************************************************************
** Task0 任务0
** 完成目标板初始化和创建TaskLED1任务
********************************************************************************************************
*/
void Task0 (void *pdata)
{
pdata = pdata;
TargetInit ();
OSTaskCreate (TaskDS2,(void *)0, &TaskDS2Stk[TaskDS2StkSize - 1], 3);
OSTaskCreate (TaskDS3,(void *)0, &TaskDS3Stk[TaskDS3StkSize - 1], 4);
OSTaskCreate (task_spi,(void *)0, &TaskDS4Stk[TaskDS4StkSize - 1], 5);
while (1)
{
OSTimeDly(10);
}
}
/*
********************************************************************************************************
** TaskDS2
** DS2任务
********************************************************************************************************
*/
void TaskDS2(void *pdata)
{
pdata = pdata; // 避免编译警告
PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]选择GPIO
IO1DIR |= DS2; // 设置LED1控制口输出
IO1SET = DS2;
for (;;)
{
IO1CLR = DS2;
OSTimeDly(OS_TICKS_PER_SEC / 4);
IO1SET = DS2;
OSTimeDly(OS_TICKS_PER_SEC / 2);
}
}
/*
********************************************************************************************************
** TaskDS3
** DS1任务
********************************************************************************************************
*/
void TaskDS3(void *pdata)
{
pdata = pdata; // 避免编译警告
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IO0DIR |= DS3; // 设置LED1控制口输出
IO0SET = DS3;
for (;;)
{
IO0CLR = DS3;
OSTimeDly(OS_TICKS_PER_SEC / 5);
IO0SET = DS3;
OSTimeDly(OS_TICKS_PER_SEC / 3);
OSSemPost(Sem1); //等待信号量
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -