嵌入式uCOSII嵌入式系统示例代码.docx
- 文档编号:10522388
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:37
- 大小:20.75KB
嵌入式uCOSII嵌入式系统示例代码.docx
《嵌入式uCOSII嵌入式系统示例代码.docx》由会员分享,可在线阅读,更多相关《嵌入式uCOSII嵌入式系统示例代码.docx(37页珍藏版)》请在冰豆网上搜索。
嵌入式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内核数据结构*/
/*建立一个任务*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 uCOSII 系统 示例 代码