微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于NIOS II的uC/OS系统的开发

基于NIOS II的uC/OS系统的开发

时间:09-12 来源:互联网 点击:

}

}

/*

* === FUNCTION ======================================================================

* Name: seg_task

* Description: 任务3 调用数码管驱动并通过串口显示数据

* =====================================================================================

*/

voidseg_task(void* pdata)

{

INT8U return_code = OS_NO_ERR;

unsignedintnumseg=0;

while(1){

numseg++;

seg_handler();

OSTimeDlyHMSM(0, 0, 0, 300);

}

}

/*

* === FUNCTION ======================================================================

* Name: seg_handler

* Description:

* =====================================================================================

*/

voidseg_handler(void)

{

IOWR_ALTERA_AVALON_PIO_DATA(SEG_SEL_BASE, 0xff);

IOWR_ALTERA_AVALON_PIO_DATA(SEG_SEL_BASE, bittab[cnt]);

IOWR_ALTERA_AVALON_PIO_DATA(SEG_DAT_BASE, segtab[led_buffer[cnt]]);

cnt++;

if(cnt==6)

cnt=0;

}

/*

* === FUNCTION ======================================================================

* Name: main

* Description:

* =====================================================================================

*/

voidinitialize_task(void* pdata)

{

INT8U return_code = OS_NO_ERR;

initCreateTasks();

return_code = OSTaskDel(OS_PRIO_SELF);

while(1);

}

/*

* === FUNCTION ======================================================================

* Name: main

* Description:

* =====================================================================================

*/

intmain (intargc,char* argv[],char* envp[])

{

INT8U return_code = OS_NO_ERR;

return_code = OSTaskCreateExt(initialize_task,

NULL,

(void*)initialize_task_stk[TASK_STACKSIZE],

INITIALIZE_TASK_PRIORITY,

INITIALIZE_TASK_PRIORITY,

initialize_task_stk,

TASK_STACKSIZE,

NULL,

0);

OSStart();

return0;

}

/*

* === FUNCTION ======================================================================

* Name: initCreateTasks

* Description:

* =====================================================================================

*/

intinitCreateTasks(void)

{

INT8U return_code = OS_NO_ERR;

return_code = OSTaskCreateExt(ds1302_task,

NULL,

(void*)ds1302_task_stk[TASK_STACKSIZE],

DS1302_TASK_PRIORITY,

DS1302_TASK_PRIORITY,

ds1302_task_stk,

TASK_STACKSIZE,

NULL,

0);

return_code = OSTaskCreateExt(led_task,

NULL,

(void*)led_task_stk[TASK_STACKSIZE],

LED_TASK_PRIORITY,

LED_TASK_PRIORITY,

led_task_stk,

TASK_STACKSIZE,

NULL,

0);

return_code = OSTaskCreateExt(seg_task,

NULL,

(void*)seg_task_stk[TASK_STACKSIZE],

SEG_TASK_PRIORITY,

SEG_TASK_PRIORITY,

seg_task_stk,

TASK_STACKSIZE,

NULL,

0);

return0;

}

编译Nios II工程,下载到EPCS中,下载的方法前面章节讲过,这里就不再重复了。下面是PC机上串口调试工具上的数据。在开发板上还可以看到四个LED灯在闪烁和数码管显示654321。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top