📄 test.c
字号:
/*******************************************************************************************************
** 西安傅立叶电子科技
** Xian FFT Electornic Technology
** http://www.fftchina.com
********************************************************************************************************/
// μCOS-II上的LPC210x的通用IO使用的例子,按板上的KEY1则蜂鸣器会响三声
#include "config.h"
#define TASK_STK_SIZE 64
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK TaskStk[TASK_STK_SIZE];
#define KEY1 (1 << 17) /* P0.17为key1 */
#define BEE (1 << 7) /* P0.07为蜂鸣器 */
void TaskStart(void *data);
void Task(void *data);
/*********************************************************************************************************
** 函数名称: main
** 功能描述: c语言的主函数,由它启动多任务环境
********************************************************************************************************/
int main (void)
{
OSInit();
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
OSStart();
return 0;
}
/*********************************************************************************************************
** 函数名称: TaskStart
** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
********************************************************************************************************/
void TaskStart(void *pdata)
{
uint8 i;
pdata = pdata; /* 避免编译警告 */
TargetInit(); /* 目标板初始化 */
IODIR &= ~KEY1; /* 设置KEY1为输入*/
IOSET = BEE;
IODIR |= BEE; /* 设置蜂鸣器为输出*/
PINSEL0 = (PINSEL0 & 0xcffff3ff); /* 管教选择模块初始化 */
OSTaskCreate(Task, (void *)0, &TaskStk[TASK_STK_SIZE - 1], 10); /* 创建任务 */
while(1)
{
OSTaskSuspend(OS_PRIO_SELF);
for (i=0;i<3;i++){
IOCLR = BEE;
OSTimeDly(OS_TICKS_PER_SEC / 16);
IOSET = BEE;
OSTimeDly(OS_TICKS_PER_SEC / 16);
}
}
}
/*********************************************************************************************************
** 函数名称: Key1的时延
** 功能描述: μCOS-II的任务
********************************************************************************************************/
void Task(void *pdata)
{
pdata = pdata; /* 避免编译警告 */
for (;;)
{
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */
if ((IOPIN & KEY1) != 0)
{
continue;
}
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */
if ((IOPIN & KEY1) != 0)
{
continue;
}
OSTaskResume(0);
while ((IOPIN & KEY1) == 0)
{
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -