?? main.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Chenxibing
** Modified date: 2005-03-07
** Version:
** Descriptions: EasyARM2131上的第一個基于uC/OS-II的例子。
** 按一下按鍵KEY1,松開后蜂鳴器響2聲。
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
#define TASK_STK_SIZE 64 // 定義用戶任務的堆棧長度
OS_STK TaskStartStk[TASK_STK_SIZE]; //(2)
OS_STK TaskStk[TASK_STK_SIZE]; //(3)
/* 函數聲明 */
void Task1(void *pdata);
void Task2(void *pdata);
void BeeMoo(void);
void BeeNoMoo(void);
uint32 GetKey(void);
#define KEY1 1 << 16 // P0.16-KEY1
#define BEEP 1 << 7 // P0.7-BEEP
/*
*********************************************************************************************************
** 函數名稱 :main()
** 函數功能 :uC/OS-II主函數,啟動多任務環境。
*********************************************************************************************************
*/
int main (void)
{
OSInit(); //(4)
OSTaskCreate(Task1, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0); //(5)
OSStart(); //(6)
return 0; //(7)
}
/*
*********************************************************************************************************
** 任務1-Task1()
** 鍵盤掃描(具有去抖動功能)
*********************************************************************************************************
*/
void Task1(void *pdata)
{
pdata = pdata; /* 避免編譯警告 */
TargetInit(); /* 目標板初始化 */
for (;;) //(1)
{
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延時20毫秒 */ //(2)
if (GetKey() != KEY1) /* GetKey用于獲取鍵盤當前狀態 */
{
continue; /* 不是KEY1不理會 */
}
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延時20毫秒,用于去抖 */ //(3)
if (GetKey() != KEY1) /* 還是KEY1才正確 */
{
continue;
}
OSTaskCreate(Task2, (void *)0, &TaskStk[TASK_STK_SIZE - 1], 10); //(4)
while (GetKey() != 0) /* 等待松開按鍵 */
{
OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延時20毫秒 */ //(5)
}
}
}
/*
*********************************************************************************************************
** 任務2-Task2()
** 蜂鳴器鳴叫
*********************************************************************************************************
*/
void Task2(void *pdata)
{ /* 書中沒有給出管腳連接的代碼 */
PINSEL0 = 0; // 設置管腳連接
IO0DIR = BEEP; // 蜂鳴器控制口輸出
pdata = pdata; /* 避免編譯警告 */
BeeMoo(); /* 使蜂鳴器鳴叫 */
OSTimeDly(OS_TICKS_PER_SEC / 8); /* 延時 */ //(1)
BeeNoMoo(); /* 使蜂鳴器停止鳴叫 */
OSTimeDly(OS_TICKS_PER_SEC / 4); /* 延時 */ //(2)
BeeMoo(); /* 使蜂鳴器鳴叫 */
OSTimeDly(OS_TICKS_PER_SEC / 8); /* 延時 */ //(3)
BeeNoMoo(); /* 使蜂鳴器停止鳴叫 */
OSTaskDel(OS_PRIO_SELF); /* 刪除自己 */ //(4)
}
/*
*********************************************************************************************************
BeeMoo()
BeeNoMoo()
GetKey()
函數的具體實現
*********************************************************************************************************
*/
/* 蜂鳴器鳴叫 */
void BeeMoo(void)
{
IO0CLR = BEEP;
}
/* 蜂鳴器不鳴叫 */
void BeeNoMoo(void)
{
IO0SET = BEEP;
}
/* 讀取按鍵 */
uint32 GetKey(void)
{
volatile uint32 key;
key = IO0PIN & KEY1;
return key;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -