⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 《μCOS-II微小内核分析与程序设计-基于LPC2300》配套例程第三章 uCOS-II程序设计实例
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************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.00
** Descriptions:		The main() function example template
**
**---------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.00
** Descriptions:		The original version
**
**---------------------------------------------------------------------------------------------------------
** Modified by:         wangwei
** Modified date:       2007-10-25
** Version:             1.01
** Descriptions:        Key start the Samp, the sampdata is sended to PC by UART
**
**********************************************************************************************************/
#include "main.h"
#include "stdio.h"

#define TaskKey_ID             16      		                            /*  按键任务的ID                 */
#define TaskKey_PRIO           TaskKey_ID		                        /*  按键任务的优先级             */
#define TaskKey_STACK_SIZE     256     		                            /*  定义用户按键任务堆栈长度     */  

#define TaskSamp_ID            17      		                            /*  采样任务的ID                 */
#define TaskSamp_PRIO          TaskSamp_ID		                        /*  采样任务的优先级             */
#define TaskSamp_STACK_SIZE    256     		                            /*  定义用户采样任务堆栈长度     */  

#define TaskDisp_ID            18      		                            /*  显示任务的ID                 */
#define TaskDisp_PRIO          TaskDisp_ID		                        /*  显示任务的优先级             */
#define TaskDisp_STACK_SIZE    256     		                            /*  定义用户显示任务堆栈长度     */  


OS_STK  TaskKey_STACK[TaskKey_STACK_SIZE];                              /*  定义用户按键任务堆栈         */
OS_STK  TaskSamp_STACK[TaskSamp_STACK_SIZE];                            /*  定义用户采样任务堆栈         */
OS_STK  TaskDisp_STACK[TaskDisp_STACK_SIZE];                            /*  定义用户显示任务堆栈         */

void    TaskKey(void *pdata);                                           /*  声明用户按键任务             */
void    TaskSamp(void *pdata);                                          /*  声明用户采样任务             */
void    TaskDisp(void *pdata);                                          /*  声明用户显示任务             */

OS_EVENT *Sem;                                                          /*  定义信号量                   */
OS_EVENT *Q;                                                            /*  定义消息队列Q指针            */

void     *MsgQTbl[10];                                                  /*  定义队列Q消息指针数组        */

OS_MEM   *PartitionPt;                                                  /*  定义内存分区指针             */
INT8U     Partition[10][4];                                             /*  定义每块内存分区4个字节      */

#define   Key1    1<<6                                                  /*  定义按键1                    */
#define   Qlength 10                                                    /*  定义消息队列的长度           */ 
INT32U    SampNum;                                                      /*  定义采样次数                 */

/**********************************************************************************************************
  main 主函数
**********************************************************************************************************/
int main (void)
{
    OSInit(); 
    OSTaskCreateExt(TaskKey,                                            /*  创建按键任务                 */
                    (void *)0,
                    &TaskKey_STACK[TaskKey_STACK_SIZE-1],
                    TaskKey_PRIO,
                    TaskKey_ID,
                    &TaskKey_STACK[0],
                    TaskKey_STACK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); 
    OSTaskCreateExt(TaskSamp,                                           /*  创建采样任务                 */
                    (void *)0,
                    &TaskSamp_STACK[TaskSamp_STACK_SIZE-1],
                    TaskSamp_PRIO,
                    TaskSamp_ID,
                    &TaskSamp_STACK[0],
                    TaskSamp_STACK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); 
    OSTaskCreateExt(TaskDisp,                                           /*  创建显示任务                 */
                    (void *)0,
                    &TaskDisp_STACK[TaskDisp_STACK_SIZE-1],
                    TaskDisp_PRIO,
                    TaskDisp_ID,
                    &TaskDisp_STACK[0],
                    TaskDisp_STACK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); 
    OSStart();                                       
}

/**********************************************************************************************************
** Function name:			TaskKey
** Descriptions:			按键任务,启动AD采样
** input parameters:		无
** output parameters:       无
** Returned value:			无 
**********************************************************************************************************/
void TaskKey (void *pdata)
{
	pdata = pdata;
    TargetInit();                                                       /*  目标板初始化                 */
   	IO0DIR = ~Key1;                                                     /*  定义按键方向为输入           */
   	Sem = OSSemCreate(0);                                               /*  创建信号量                   */
   	while (1) {
    while ((IO0PIN & Key1) != 0) {                                  	/*  等待按键按下                 */
   	        OSTimeDly(1);                                               /*  延时1个clk                   */
        }
        OSTimeDly(OS_TICKS_PER_SEC / 50);               				/*  延时20毫秒去抖动             */
        if ((IO0PIN & Key1) != 0) {                                     /*  按键无效,返回扫描           */
            continue;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -