FreeRTOS----debug之任务信息的查询,函数使用的小坑和“任务“这一概念

在做FreeRTOS中任务查询的例程的时候,使用了这条函数:

  **uxTaskGetSystemState**,该函数对其填入参数进行填充:
1、pxTaskStatusArray 任务状态列表,里面储存了,任务名称,优先级,等等信息
2、uxArraySize 列表的大小,根据任务数量动态分配大小,这里用了uxTaskGetNumberOfTasks这条函数获取任务数量,使用pvPortMalloc分配太小,用法和C的malloc相同.
3、pulTotalRunTime  任务总运行时间 u32

今天踩的坑就是在pulTotalRunTime 这个参数踩的,写的时候脑袋不装东西,一时好奇,函数的pulTotalRunTime参数是一个u32类型的指针,应传入一个指针地址,而我定义变量时,将变量定义成了u32类型的指针,在传参数时编译器也没有报错!程序一跑直接飞HardFault_Handler异常。
细细思考一下,原因是我没有对指针进行初始化!写了一个野指针,传参数时因为是指针类型,是一个地址,编译器自然不会报错,但是参数传入,野指针的地址指向不明确,数据错误,非法内存的访问,程序跑飞自然就正常了。

然后再查资料解决错误的时候,找到了很多关于任务调度的知识,记录一下:

首先关于任务中没有while(1)的问题:
首先明确一个点,任务的观点,任务就是一个一直在的跑的程序,要写在while(1)里,如果没有写在while(1)里,总也得有类似while(1)的地方,这里看到一个定时器回调函数,先把坑挖在这里,以后来填。
再说回来,没有while(1)会怎么样。

引用 用户 fbori 的一句话 :
FreeRTOS我在7.x使用的情況是如果你把一個不是死迴圈的任務(task)加入排程(scheduling),你執行程式會進入他們設計的一個debug使用的死迴圈,會跟你說必須要在這個函式最下面呼叫刪除task的api࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值