📄 main.c
字号:
//*
//*********************************************************************************************************
//*
//* LOGO
//*
//*
//* 文 件 名 : main.c
//*
//* 文件描述 : STM32系统主文件
//*
//* 作 者 :
//* 版 本 :
//* 编 译 器 : IAR EWARM 5.20
//*********************************************************************************************************
//*
#define OS_GLOBALS
#include "app_cfg.h"
//*
//*********************************************************************************************************
//* 测试
//*********************************************************************************************************
//*
#define Task1_LED1_Stk_Size 64
#define Task2_LED2_Stk_Size 64
#define Task3_LED3_Stk_Size 64
#define Task4_LED4_Stk_Size 64
#define Task1_LED1_Prio 11
#define Task2_LED2_Prio 12
#define Task3_LED3_Prio 13
#define Task4_LED4_Prio 14
OS_STK Task1_LED1_Stk[Task1_LED1_Stk_Size];
OS_STK Task2_LED2_Stk[Task2_LED2_Stk_Size];
OS_STK Task3_LED3_Stk[Task3_LED3_Stk_Size];
OS_STK Task4_LED4_Stk[Task4_LED4_Stk_Size];
static void Task1_LED1(void *pdata);
static void Task2_LED2(void *pdata);
static void Task3_LED3(void *pdata);
static void Task4_LED4(void *pdata);
//*
//********************************************************************************************************
//* 函 数 名 : static void APP_TaskStart(void *pdata)
//**------------------------------------------------------------------------------------------------------
//* 描 述 : main
//**------------------------------------------------------------------------------------------------------
//* 输入参数 : None.
//**------------------------------------------------------------------------------------------------------
//* 输出参数 : None.
//**------------------------------------------------------------------------------------------------------
//* 返 回 : None.
//********************************************************************************************************
//*
static void APP_TaskStart(void *pdata)
{
pdata = pdata;
//目标板初始化,
Target_Init();
// 启动系统Tick
OS_CPU_SysTickInit();
//统计任务初始化
#if OS_TASK_STAT_EN > 0
OSStatInit();
#endif
//事件的建立
CreateEvents();
//系统多任务的建立
CreateMultiTask();
//开始任务自动挂起
//OSTaskSuspend(OS_PRIO_SELF);
while(1)
{
// 测试
INT8U err;
GPIO_InitTypeDef GPIO_InitStructure;
// 打开控制端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
OSTaskCreateExt(Task1_LED1,
(void *)0,
&Task1_LED1_Stk[Task1_LED1_Stk_Size - 1],
Task1_LED1_Prio,
Task1_LED1_Prio,
&Task1_LED1_Stk[0],
Task1_LED1_Stk_Size,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(Task1_LED1_Prio, "Task1-LED1", &err);
OSTaskCreateExt(Task2_LED2,
(void *)0,
&Task2_LED2_Stk[Task2_LED2_Stk_Size - 1],
Task2_LED2_Prio,
Task2_LED2_Prio,
&Task2_LED2_Stk[0],
Task2_LED2_Stk_Size,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(Task2_LED2_Prio, "Task2-LED2", &err);
OSTaskCreateExt(Task3_LED3,
(void *)0,
&Task3_LED3_Stk[Task3_LED3_Stk_Size - 1],
Task3_LED3_Prio,
Task3_LED3_Prio,
&Task3_LED3_Stk[0],
Task3_LED3_Stk_Size,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(Task3_LED3_Prio, "Task3-LED3", &err);
OSTaskCreateExt(Task4_LED4,
(void *)0,
&Task4_LED4_Stk[Task4_LED4_Stk_Size - 1],
Task4_LED4_Prio,
Task4_LED4_Prio,
&Task4_LED4_Stk[0],
Task4_LED4_Stk_Size,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(Task4_LED4_Prio, "Task4-LED4", &err);
OSTimeDly(OS_TICKS_PER_SEC);
OSTaskSuspend(OS_PRIO_SELF);
}
}
//*
//********************************************************************************************************
//* 函 数 名 : void main(void)
//**------------------------------------------------------------------------------------------------------
//* 描 述 : main
//**------------------------------------------------------------------------------------------------------
//* 输入参数 : None.
//**------------------------------------------------------------------------------------------------------
//* 输出参数 : None.
//**------------------------------------------------------------------------------------------------------
//* 返 回 : None.
//********************************************************************************************************
//*
void main(void)
{
#if (OS_TASK_NAME_SIZE > 14) && (OS_TASK_STAT_EN > 0)
INT8U err;
#endif
OSInit();
//设置空闲任务名称
#if OS_TASK_NAME_SIZE > 14
OSTaskNameSet(OS_TASK_IDLE_PRIO, "uC/OS-II Idle", &err);
#endif
//设置统计任务名称
#if (OS_TASK_NAME_SIZE > 14) && (OS_TASK_STAT_EN > 0)
OSTaskNameSet(OS_TASK_STAT_PRIO, "uC/OS-II Stat", &err);
#endif
//用任务建立任务
OSTaskCreateExt(APP_TaskStart, //void (*task)(void *pd) 任务首地址
(void *)0, //void *pdata 数据指针
&APP_TaskStartStk[APP_TASK_START_STK_SIZE - 1], //OS_STK *ptos 指向任务堆栈栈顶的指针
(INT8U)APP_TASK_START_PRIO, //INT8U prio 任务优先级
(INT16U)APP_TASK_START_ID, //INT16U id 任务的ID号
&APP_TaskStartStk[0], //OS_STK *pbos 指向任务堆栈栈底的指针
(INT32U)APP_TASK_START_STK_SIZE, //INT32U stk_size 堆栈容量
(void *)0, //void *pnext 数据指针
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); //INT16U opt 设定OSTaskCreateExt的选项
#if OS_TASK_NAME_SIZE > 14
OSTaskNameSet(APP_TASK_START_PRIO, "Task-Start", &err);
#endif
OSStart();
}
//********************************************************************************************************
//********************************************************************************************************
//********************************************************************************************************
//********************************************************************************************************
//********************************************************************************************************
static void Task1_LED1(void *pdata)
{
pdata = pdata;
while(1)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_4);
OSTimeDly(OS_TICKS_PER_SEC * 2);
GPIO_SetBits(GPIOC, GPIO_Pin_4);
OSTimeDly(OS_TICKS_PER_SEC * 2);
}
}
//********************************************************************************************************
static void Task2_LED2(void *pdata)
{
pdata = pdata;
while(1)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
OSTimeDly(OS_TICKS_PER_SEC / 1);
GPIO_SetBits(GPIOC, GPIO_Pin_5);
OSTimeDly(OS_TICKS_PER_SEC / 1);
}
}
//********************************************************************************************************
static void Task3_LED3(void *pdata)
{
pdata = pdata;
while(1)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
OSTimeDly(OS_TICKS_PER_SEC / 2);
GPIO_SetBits(GPIOC, GPIO_Pin_6);
OSTimeDly(OS_TICKS_PER_SEC / 2);
}
}
//********************************************************************************************************
static void Task4_LED4(void *pdata)
{
pdata = pdata;
while(1)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_7);
OSTimeDly(OS_TICKS_PER_SEC / 4);
GPIO_SetBits(GPIOC, GPIO_Pin_7);
OSTimeDly(OS_TICKS_PER_SEC / 4);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -