freertos心跳中断_FreeRTOS之任务管理

FreeRTOS学习记录第一天

一、

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53int main(void)

{

/*主控及相关外设初始化*/

BspInit ();

/* 创建任务 */

AppTaskCreate();

/* 启动调度,开始执行任务 */

vTaskStartScheduler();

/* 如果一切正常, main()函数不应该会执行到这里。但如果执行到这里,很可能是内存堆空间不足导致空闲

任务无法创建。第五章有讲述更多关于内存管理方面的信息 */

for( ;; );

}

static void vTaskTest1(void *pvParameters)

{

volatile unsigned long u1;

for(;;)

{

printf("Test 1\r\n");

for(u1=0;u1<1000000;u1++)

{

}

}

}

static void vTaskTest2(void *pvParameters)

{

volatile unsigned long u1;

for(;;)

{

printf("Test 2\r\n");

for(u1=0;u1<1000000;u1++)

{

}

}

}

static void AppTaskCreate (void)

{

/*测试任务*/

xTaskCreate( vTaskTest1, "vTaskTest1", 512, NULL, 1, NULL );

xTaskCreate( vTaskTest2, "vTaskTest2", 512, NULL, 1, NULL );

}

串口输出:

uxwPHF6emnscDR4vLy41jg7vHq6sNY4Pr27OyYdRaLUrDAAosCCyywwAILLAossMACCyywKLDAAgsssMCiwAILLLDAAosCCyywwAILLAossMACCyywKLDAAgsssMCiwAILLLDAAosCCyywwAILLAossMACCyywKLDAAgsssMCiwAILLLDAAosCCyywwAILLAossMACCyywKLDAAgsssMCiwAILLLDAAosCCyywwAILLAossMACCyywKLDAAgsssL6u+k+AAQCR9eHtLKvLfwAAAABJRU5ErkJggg==

分析:

两个任务的优先级相同,因为我们开启了调度器,调度器会让任务轮流执行一个“时间片”;

如果其中一个优先级高,将一直执行优先级高的任务,优先级低的任务也就被“饿死”了,CPU在任何时刻永远执行当前优先级最高的任务;

二、

仅更改任务的优先级:

1

2

3

4

5

6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值