UCOIII时间片轮转调度

文章详细描述了在STM32F1平台中使用UCOSIII实时操作系统实现的两个任务(Task1和Task2)的创建、运行以及时间片轮转调度的过程。作者展示了如何配置任务优先级、堆栈和时间片,以实现任务间的公平竞争和高效执行。
摘要由CSDN通过智能技术生成

//广州市星翼电子科技有限公司

//作者:正点原子 @ALIENTEK

//任务优先级

#define START_TASK_PRIO 3

//任务堆栈大小

#define START_STK_SIZE 128

//任务控制块

OS_TCB StartTaskTCB;

//任务堆栈

CPU_STK START_TASK_STK[START_STK_SIZE];

//任务函数

void start_task(void *p_arg);

//任务优先级

#define TASK1_TASK_PRIO 4

//任务堆栈大小

#define TASK1_STK_SIZE 128

//任务控制块

OS_TCB Task1_TaskTCB;

//任务堆栈

CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE];

void task1_task(void *p_arg);

//任务优先级

#define TASK2_TASK_PRIO 4

//任务堆栈大小

#define TASK2_STK_SIZE 128

//任务控制块

OS_TCB Task2_TaskTCB;

//任务堆栈

CPU_STK TASK2_TASK_STK[TASK2_STK_SIZE];

//任务函数

void task2_task(void *p_arg);

//主函数

int main(void)

{

OS_ERR err;

CPU_SR_ALLOC();

delay_init(); //时钟初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置

uart_init(115200); //串口初始化

LED_Init(); //LED初始化

LCD_Init(); //LCD初始化

POINT_COLOR = RED;

LCD_ShowString(30,10,200,16,16,“ALIENTEK STM32F1”);

LCD_ShowString(30,30,200,16,16,“UCOSIII Examp 6-3”);

LCD_ShowString(30,50,200,16,16,“Task Round-robin”);

LCD_ShowString(30,70,200,16,16,“ATOM@ALIENTEK”);

LCD_ShowString(30,90,200,16,16,“2015/3/19”);

OSInit(&err); //初始化UCOSIII

OS_CRITICAL_ENTER();//进入临界区

//创建开始任务

OSTaskCreate((OS_TCB * )&StartTa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值