uCOSII嵌入式的系统示例代码.doc

上传人:scccc 文档编号:12602276 上传时间:2021-12-04 格式:DOC 页数:50 大小:323KB
返回 下载 相关 举报
uCOSII嵌入式的系统示例代码.doc_第1页
第1页 / 共50页
uCOSII嵌入式的系统示例代码.doc_第2页
第2页 / 共50页
uCOSII嵌入式的系统示例代码.doc_第3页
第3页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《uCOSII嵌入式的系统示例代码.doc》由会员分享,可在线阅读,更多相关《uCOSII嵌入式的系统示例代码.doc(50页珍藏版)》请在三一文库上搜索。

1、/ 主函数模板#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件 */#include"mx1_aitc.h"/* 包含与中断控制器相关的头文件 */#include"IRQ.h"/* 包含与中断管理相关的头文件 */* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK256#define PRIO_TASK3OS_STK StkT askSTK_S

2、IZE_TASK;/* 分配给任务的堆栈大小 */* 任务的优先级 */* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断 (必须在第一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */while( 1 )/* 初始化后,从这里开始执行int _main( void )MX1_AITC_Init();IRQ_Init();C 代码 */* 初始化中断控制器 */* 初始化

3、中断管理 */OSInit();/* 初始化 uC/OS-II 内核数据结构 */* 建立一个任务 */OSTaskCreate( YourTask, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */return 0;/LED 闪烁/led.c#include"INCLUDES.H"#include"led.h"#include"mx1_gpio.h"#include"mx1_aitc.h"#include"mx1_uart

4、.h"#include"IRQ.h"/* 包含与 uC/OS-II 相关的系统调用的头文件 */* Led 驱动接口函数的说明头文件 */* 包含与通用 IO 口相关的头文件 */* 包含与中断控制器相关的头文件 */* 包含与串口相关的头文件 */* 包含与中断管理相关的头文件 */* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_LEDDEMO 256/* 分配给任务的堆栈大小 */#define PRIO_LEDDEMO

5、3/* 任务的优先级 */* 为任务分配堆栈空间 */OS_STK StkLedDemoSTK_SIZE_LEDDEMO;/* 此函数定义了一个任务 */void LedDemo( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断 (必须在第一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */while( 1 )LED_On( LED3 );/*依次点亮 LED*/OSTimeDlyHMSM( 0, 0, 0, 500 );/*延时 500 毫秒 */LED

6、_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 */

7、IRQ_Init();/* 初始化中断管理 */LED_Init( LED3 );/* 初始化 LED */LED_Init( LED4 );MX1_UART_PutString(COM1,"nrnruC/OS-II is initializing.nr",33);OSInit(); /* 初始化 uC/OS-II 内核数据结构 */* 建立一个任务 */ OSTaskCreate( LedDemo, 0, &StkLedDemoSTK_SIZE_LEDDEMO-1, PRIO_LEDDEMO );MX1_UART_PutString(COM1,"Runn

8、ing.nr",12);OSStart(); /* 开始调度 */return 0;/LED 闪烁#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/#include"IRQ.h"/*包含与中断管理相关的头文件*/#include"led.h"/* Led 驱动接口函数的说明头文件*/#include"mx1_gpio.h"*/* 用于时钟中断 */extern voi

9、d OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK 256 /* 分配给任务的堆栈大小 */#define PRIO_TASK 3 /* 任务的优先级 */OS_STK StkT askSTK_SIZE_TASK;/* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断 (必须在第一个运行的任务里进行 ) */OSS

10、tartTimeTick();/* 在下面添加任务内容 */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 );OS

11、TimeDlyHMSM( 0, 0, 0, 500 );LED_Off( LED7 );OSTimeDlyHMSM( 0, 0, 0, 500 );/* 初始化后,从这里开始执行 int _main( void )MX1_AITC_Init();IRQ_Init();C 代码 */* 初始化中断控制器 */* 初始化中断管理 */OSInit();/* 初始化 uC/OS-II 内核数据结构 */* 建立一个任务 */OSTaskCreate( YourTask, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */

12、return 0;/ 按钮开关#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件 */#include"mx1_aitc.h"/*包含与中断控制器相关的头文件 */#include"IRQ.h"/*包含与中断管理相关的头文件 */#include"led.h"#include"switch.h"/* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#d

13、efine STK_SIZE_TASK256 /* 分配给任务的堆栈大小 */#define PRIO_TASK 3/* 任务的优先级 */* 为任务分配堆栈空间 */OS_STK StkT askSTK_SIZE_TASK;/* 此函数定义了一个任务 */void YourT ask( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断 (必须在第一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */LED_Init( LED3 );LED_Init( LED

14、4 );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( S

15、W2 ) )LED_On( LED3 );elseLED_Off( LED3 );/if( SWITCH_IS_ON( SW3 ) )LED_On( LED4 );elseLED_Off( LED4 );/if( SWITCH_IS_ON( SW4 ) )LED_On( LED5 );elseLED_Off( LED5 );/if( SWITCH_IS_ON( SW5 ) )LED_On( LED6 );elseLED_Off( LED6 );/*/if( SWITCH_IS_ON( SW6 ) )LED_On( LED7 );elseLED_Off( LED7 );/if( SWITCH_I

16、S_ON( SW7 ) )LED_On( LED8 );elseLED_Off( LED8 );/if( SWITCH_IS_ON( SW8 ) )LED_On( LED9 );elseLED_Off( LED9 );/if( SWITCH_IS_ON( SW9 ) )LED_On( LED10 );elseLED_Off( LED10 );/* 初始化后,从这里开始执行 C 代码 */int _main( void )MX1_AITC_Init(); /* 初始化中断控制器 */IRQ_Init();/* 初始化中断管理 */OSInit();/* 初始化 uC/OS-II 内核数据结构 *

17、/* 建立一个任务 */OSTaskCreate( YourTask, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart();/* 开始调度 */return 0;/ 主板 I/O LED#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件 */#include"mx1_aitc.h"/* 包含与中断控制器相关的头文件 */#include"IRQ.h"/* 包含与中断管理相关的头文件 */#include"mx1_gpio.h&

18、quot;#include"led.h"/* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK256#define PRIO_TASK3OS_STK StkT askSTK_SIZE_TASK;/* 分配给任务的堆栈大小 */* 任务的优先级 */* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT

19、);/* 开启 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 )

20、;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 );OSTimeDlyH

21、MSM( 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(

22、 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, &StkTaskSTK_SIZ

23、E_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */return 0;/ 串口通信#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件 */#include"mx1_aitc.h"/* 包含与中断控制器相关的头文件 */#include"IRQ.h"/* 包含与中断管理相关的头文件 */#include"mx1_gpio.h"#include"mx1_uart.h"#include<string.h>/* 用

24、于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK 256 /* 分配给任务的堆栈大小 */#define PRIO_TASK 3 /* 任务的优先级 */OS_STK StkT askSTK_SIZE_TASK;/* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask( void *pdata )char tmp;IRQ_Register( OSTickISR, TIMER1_INT ); /* 开启 uC/OS-II 的

25、时钟中断 (必须在第 一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */MX1_UART_Init( COM1 );MX1_UART_PutString( COM1, "Input a Char:", strlen("Input a Char:") );while( 1 )MX1_UART_GetChar( COM1, &tmp );/* 显示输入的字符 */MX1_UART_PutChar( COM1, tmp );/* 初始化后,从这里开始执行 C 代码 */ int _main( void )/

26、* 初始化中断控制器 */* 初始化中断管理 */MX1_AITC_Init();IRQ_Init();OSInit();/* 初始化 uC/OS-II 内核数据结构 */* 建立一个任务 */OSTaskCreate( YourTask, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */return 0;/AD 转换/misc.cadc0809.c#include"INCLUDES.H"#include"mx1_aitc.h"#include"IRQ.h&quo

27、t;#include"mx1_gpio.h"#include"mx1_uart.h"#include"adc0809.h"#include"misc.h"/* 包含与 uC/OS-II 相关的系统调用的头文件 */* 包含与中断控制器相关的头文件 */* 包含与中断管理相关的头文件 */* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK256 /* 分配给任务的堆栈大小

28、*/#define PRIO_TASK 3/* 任务的优先级 */* 为任务分配堆栈空间 */OS_STK StkT askSTK_SIZE_TASK;/* 此函数定义了一个任务 */void YourT ask( void *pdata )char tmp16;(必须在第IRQ_Register( OSTickISR, TIMER1_INT ); /* 开启 uC/OS-II 的时钟中断 一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */ADC0809_Init();while( 1 )/*将电压值放大10 0倍,通过串口显示 */tmp,MX1

29、_UART_PutString( COM1,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 内核数据结构 */* 建立一个任

30、务 */OSTaskCreate( YourTask, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */return 0;/LCD#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件 */#include"mx1_aitc.h"/*包含与中断控制器相关的头文件 */#include"IRQ.h"/*包含与中断管理相关的头文件 */#include"mx1_gpio.h"#include&quo

31、t;misc.h"#include"mx1_lcdc.h"/* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK 256 /* 分配给任务的堆栈大小 */#define PRIO_TASK 3 /* 任务的优先级 */OS_STK StkT askSTK_SIZE_TASK;/* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask( void *pdata )int i;IRQ_Regist

32、er( OSTickISR, TIMER1_INT ); /* 开启 uC/OS-II 的时钟中断 (必须在第 一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */MX1_LCDC_DrawRect( 0, 0, 319, 239, 50, 50, LS_SOLID, FS_SOLID );MX1_LCDC_DrawSquare( 0,0, 120, 15, 31, LS_SOLID, FS_SOLID );MX1_LCDC_DrawCircle( 60, 180,60, 15, 47, LS_SOLID, FS_DOTDOT );MX1_LCDC_

33、DrawRect( 120, 120, 319, 239, 50, 47, LS_SOLID, FS_DOTDOT );MX1_LCDC_DrawEllipse( 120, 0, 319, 120, 31, 47, LS_SOLID, FS_SOLID );i=0;while( 1 )if( i+%2 )MX1_LCDC_DrawSquare( 0,0, 120, 15, 31, LS_SOLID, FS_SOLID );elseMX1_LCDC_DrawSquare( 0,0, 120, 31, 15, LS_SOLID, FS_SOLID );OSTimeDlyHMSM( 0, 0, 1,

34、 0 );/* 初始化后,从这里开始执行 C 代码 */int _main( void )unsigned int paletteLCDC_CMRAM_SIZE;/#define LCDC_CMRAM_SIZE 256int i;MX1_AITC_Init();/* 初始化中断控制器 */IRQ_Init();/* 初始化中断管理 */OSInit(); /* 初始化 uC/OS-II 内核数据结构 */ 初始化 LCDMX1_LCDC_Init(LCDC_PANEL_WIDTH,/ 屏幕宽 320LCDC_PANEL_HEIGHT,/ 屏幕高 240LCDC_INIT_STARTX,/ 显存

35、帧 X 0LCDC_INIT_STARTY,/ 显存帧 Y 0LCDC_VPW,/ 虚拟页宽 1024*3LCDC_PANEL_CONF,/ 显示屏参数LCDC_BPP );/ 像素颜色位数 8/ 初始化调色板 for( i=0; i<16; i+ )palettei= RGB( i, 0, 0 );palettei+16= RGB( 0, i, 0 );palettei+32= RGB( 0, 0, i );palettei+48= RGB( i, i, i );MX1_LCDC_CMRAM_Set( palette );/* 建立一个任务 */OSTaskCreate( YourTa

36、sk, 0, &StkTaskSTK_SIZE_TASK-1, PRIO_TASK );OSStart(); /* 开始调度 */return 0;/ 多任务#include"INCLUDES.H"/* 包含与 uC/OS-II 相关的系统调用的头文件#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/#include"IRQ.h"/*包含与中断管理相关的头文件*/#include"led.h"/* Led 驱动接口函数的说明头文件*/#include"mx1_gpio.h

37、"#include"misc.h"#include"mx1_lcdc.h"*/* 用于时钟中断 */extern void OSStartTimeTick( void );extern void OSTickISR( void );#define STK_SIZE_TASK1256 /* 分配给任务的堆栈大小 */#define STK_SIZE_TASK2 256#define STK_SIZE_TASK3 256#define PRIO_TASK1/* 任务的优先级 */#define PRIO_TASK2 4 #define PRIO_T

38、ASK3 5OS_STK StkT ask1STK_SIZE_TASK1;OS_STK StkT ask2STK_SIZE_TASK2;OS_STK StkT ask3STK_SIZE_TASK3;/* 为任务分配堆栈空间 */* 此函数定义了一个任务 */void YourT ask1( void *pdata )IRQ_Register( OSTickISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断 (必须在第一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */LED_Init( LED3 ); /* 初始化 */LE

39、D_Init( LED4 );LED_Init( LED5 );LED_Init( LED6 );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

40、);OSTimeDlyHMSM( 0, 0, 0, 500 );LED_On( LED6 );OSTimeDlyHMSM( 0, 0, 0, 500 );LED_Off( LED6 );OSTimeDlyHMSM( 0, 0, 0, 500 );/* 此函数定义了一个任务 */void YourT ask2( void *pdata )/* 在下面添加任务内容 */LED_Init( LED7 );/* 初始化 */LED_Init( LED8 );LED_Init( LED9 );LED_Init( LED10 );while( 1 )LED_On( LED7 );OSTimeDlyHMSM

41、( 0, 0, 0, 200 );LED_On( LED8 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_On( LED9 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_On( LED10 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_Off( LED10 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_Off( LED9 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_Off( LED8 );OSTimeDlyHMSM( 0, 0, 0, 200 );LED_Off(

42、 LED7 );OSTimeDlyHMSM( 0, 0, 0, 200 );/* 此函数定义了一个任务 */void YourT ask3( void *pdata )int i;IRQ_Register( OSTickISR, TIMER1_INT ); /* 开启 uC/OS-II 的时钟中断 (必须在第 一个运行的任务里进行 ) */OSStartTimeTick();/* 在下面添加任务内容 */MX1_LCDC_DrawRect( 0, 0, 319, 239, 50, 50, LS_SOLID, FS_SOLID );MX1_LCDC_DrawSquare( 0,0, 120, 1

43、5, 31, LS_SOLID, FS_SOLID );MX1_LCDC_DrawCircle( 60, 180,60, 15, 47, LS_SOLID, FS_DOTDOT );MX1_LCDC_DrawRect( 120, 120, 319, 239, 50, 47, LS_SOLID, FS_DOTDOT );MX1_LCDC_DrawEllipse( 120, 0, 319, 120, 31, 47, LS_SOLID, FS_SOLID );i=0;while( 1 )if( i+%2 )MX1_LCDC_DrawSquare( 0,0, 120, 15, 31, LS_SOLID

44、, FS_SOLID ); elseMX1_LCDC_DrawSquare( 0,0, 120, 31, 15, LS_SOLID, FS_SOLID );OSTimeDlyHMSM( 0, 0, 1, 0 );/* 初始化后,从这里开始执行 C 代码 */int _main( void )int i;unsigned int paletteLCDC_CMRAM_SIZE;MX1_AITC_Init();/* 初始化中断控制器 */IRQ_Init();/* 初始化中断管理 */ 初始化 LCDMX1_LCDC_Init(LCDC_PANEL_WIDTH, LCDC_PANEL_HEIGHT,

45、LCDC_INIT_STARTX, LCDC_INIT_STARTY, LCDC_VPW, LCDC_PANEL_CONF, LCDC_BPP );/ 初始化调色板for( i=0; i<16; i+ )palettei= RGB( i, 0, 0 );palettei+16= RGB( 0, i, 0 );palettei+32= RGB( 0, 0, i );palettei+48= RGB( i, i, i );MX1_LCDC_CMRAM_Set( palette );OSInit();/* 初始化 uC/OS-II 内核数据结构 */* 建立任务 */OSTaskCreate( YourTask1, 0, &StkTask1STK_SIZE_TASK1-1, PR

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1