嵌入式uCOSII嵌入式系统示例代码.docx

上传人:b****8 文档编号:10522388 上传时间:2023-02-17 格式:DOCX 页数:37 大小:20.75KB
下载 相关 举报
嵌入式uCOSII嵌入式系统示例代码.docx_第1页
第1页 / 共37页
嵌入式uCOSII嵌入式系统示例代码.docx_第2页
第2页 / 共37页
嵌入式uCOSII嵌入式系统示例代码.docx_第3页
第3页 / 共37页
嵌入式uCOSII嵌入式系统示例代码.docx_第4页
第4页 / 共37页
嵌入式uCOSII嵌入式系统示例代码.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

嵌入式uCOSII嵌入式系统示例代码.docx

《嵌入式uCOSII嵌入式系统示例代码.docx》由会员分享,可在线阅读,更多相关《嵌入式uCOSII嵌入式系统示例代码.docx(37页珍藏版)》请在冰豆网上搜索。

嵌入式uCOSII嵌入式系统示例代码.docx

嵌入式uCOSII嵌入式系统示例代码

//主函数模板

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

while

(1){

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(YourTask,0,&StkTask[STK_SIZE_TASK-1],PRIO_TASK);

OSStart();/*开始调度*/

return0;

}

//LED闪烁

//led.c

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"led.h"/*Led驱动接口函数的说明头文件*/

#include"mx1_gpio.h"/*包含与通用IO口相关的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"mx1_uart.h"/*包含与串口相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_LEDDEMO256/*分配给任务的堆栈大小*/

#definePRIO_LEDDEMO3/*任务的优先级*/

OS_STKStkLedDemo[STK_SIZE_LEDDEMO];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidLedDemo(void*pdata)

{

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

while

(1){

LED_On(LED3);/*依次点亮LED*/

OSTimeDlyHMSM(0,0,0,500);/*延时500毫秒*/

LED_On(LED4);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED4);/*依次熄灭LED*/

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED3);

OSTimeDlyHMSM(0,0,0,500);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

MX1_GPIO_Init(MX1_GPIO_PC);/*初始化通用IO端口C*/

MX1_UART_Init(COM1);/*初始化串口1*/

IRQ_Init();/*初始化中断管理*/

LED_Init(LED3);/*初始化LED*/

LED_Init(LED4);

MX1_UART_PutString(COM1,"\n\r\n\ruC/OS-IIisinitializing...\n\r",33);

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(LedDemo,0,&StkLedDemo[STK_SIZE_LEDDEMO-1],PRIO_LEDDEMO);

MX1_UART_PutString(COM1,"Running...\n\r",12);

OSStart();/*开始调度*/

return0;

}

//LED闪烁

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

#include"led.h"/*Led驱动接口函数的说明头文件*/

#include"mx1_gpio.h"

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

LED_Init(LED3);/*初始化*/

LED_Init(LED5);

LED_Init(LED7);

while

(1){

LED_On(LED3);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED3);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED5);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED5);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED7);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED7);

OSTimeDlyHMSM(0,0,0,500);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(YourTask,0,&StkTask[STK_SIZE_TASK-1],PRIO_TASK);

OSStart();/*开始调度*/

return0;

}

//按钮开关

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

#include"led.h"

#include"switch.h"

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

LED_Init(LED3);

LED_Init(LED4);

LED_Init(LED5);

LED_Init(LED6);

LED_Init(LED7);

LED_Init(LED8);

LED_Init(LED9);

LED_Init(LED10);

SWITCH_Init(SW2);/*初始化开关*/

SWITCH_Init(SW3);

SWITCH_Init(SW4);

SWITCH_Init(SW5);

SWITCH_Init(SW6);

SWITCH_Init(SW7);

SWITCH_Init(SW8);

SWITCH_Init(SW9);

while

(1){

if(SWITCH_IS_ON(SW2))

LED_On(LED3);

else

LED_Off(LED3);

/////////////////////////

if(SWITCH_IS_ON(SW3))

LED_On(LED4);

else

LED_Off(LED4);

/////////////////////////

if(SWITCH_IS_ON(SW4))

LED_On(LED5);

else

LED_Off(LED5);

//////////////////////////

if(SWITCH_IS_ON(SW5))

LED_On(LED6);

else

LED_Off(LED6);

/**************************/

if(SWITCH_IS_ON(SW6))

LED_On(LED7);

else

LED_Off(LED7);

/////////////////////////

if(SWITCH_IS_ON(SW7))

LED_On(LED8);

else

LED_Off(LED8);

/////////////////////////

if(SWITCH_IS_ON(SW8))

LED_On(LED9);

else

LED_Off(LED9);

/////////////////////////

if(SWITCH_IS_ON(SW9))

LED_On(LED10);

else

LED_Off(LED10);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(YourTask,0,&StkTask[STK_SIZE_TASK-1],PRIO_TASK);

OSStart();/*开始调度*/

return0;

}

//主板I/OLED

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

#include"mx1_gpio.h"

#include"led.h"

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

LED_Init(LED3);/*LED的初始化,需要调用GPIO的接口设置函数*/

LED_Init(LED4);

LED_Init(LED5);

LED_Init(LED6);

LED_Init(LED7);

LED_Init(LED8);

LED_Init(LED9);

LED_Init(LED10);

while

(1){

LED_On(LED3);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED3);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED4);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED4);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED5);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED5);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED6);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED6);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED7);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED7);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED8);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED8);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED9);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED9);

OSTimeDlyHMSM(0,0,0,500);

LED_On(LED10);

OSTimeDlyHMSM(0,0,0,500);

LED_Off(LED10);

OSTimeDlyHMSM(0,0,0,500);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_GPIO_Init(MX1_GPIO_PC);

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(YourTask,0,&StkTask[STK_SIZE_TASK-1],PRIO_TASK);

OSStart();/*开始调度*/

return0;

}

//串口通信

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

#include"mx1_gpio.h"

#include"mx1_uart.h"

#include

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

chartmp;

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

MX1_UART_Init(COM1);

MX1_UART_PutString(COM1,"InputaChar:

",strlen("InputaChar:

"));

while

(1){

MX1_UART_GetChar(COM1,&tmp);/*显示输入的字符*/

MX1_UART_PutChar(COM1,tmp);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

OSTaskCreate(YourTask,0,&StkTask[STK_SIZE_TASK-1],PRIO_TASK);

OSStart();/*开始调度*/

return0;

}

//AD转换

//misc.cadc0809.c

#include"INCLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/

#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/

#include"IRQ.h"/*包含与中断管理相关的头文件*/

#include"mx1_gpio.h"

#include"mx1_uart.h"

#include"adc0809.h"

#include"misc.h"

/*用于时钟中断*/

externvoidOSStartTimeTick(void);

externvoidOSTickISR(void);

#defineSTK_SIZE_TASK256/*分配给任务的堆栈大小*/

#definePRIO_TASK3/*任务的优先级*/

OS_STKStkTask[STK_SIZE_TASK];/*为任务分配堆栈空间*/

/*此函数定义了一个任务*/

voidYourTask(void*pdata)

{

chartmp[16];

IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/

OSStartTimeTick();

/*在下面添加任务内容*/

ADC0809_Init();

while

(1){

/*将电压值放大100倍,通过串口显示*/

MX1_UART_PutString(COM1,tmp,IntToStr(500*ADC0809_READ_CHANNEL(4)/256,tmp,16));

MX1_UART_PutChar(COM1,'');

OSTimeDlyHMSM(0,0,1,0);

}

}

/*初始化后,从这里开始执行C代码*/

int__main(void)

{

MX1_AITC_Init();/*初始化中断控制器*/

IRQ_Init();/*初始化中断管理*/

MX1_UART_Init(COM1);

OSInit();/*初始化uC/OS-II内核数据结构*/

/*建立一个任务*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1