当前位置: 首页 > article >正文

FreeRTOS学习2018.6.27

《FreeRTOS学习》

1.freeRTOS基本功能函数:

定义任务:ATaskFunction();
创建任务:xTaskCreate();
改优先级:vTaskPrioritySet();
系统延时:vTaskDelay();
精确延时:vTaskDelayUntil();
空闲任务钩子函数:vApplicationIdleHook();

2.freeRTOS实用总结:

1.使用互斥信号量保护临界区代码。
2.程序中注意避免优先级反转和死锁问题。
3.使用守护任务避免上述问题。
4.内存管理(FreeRTOS的head_2.c):pvPortMalloc()、vPortFree()

3.错误排查(栈溢出):

可使用下述函数完成程序中的栈溢出处理:
uxTaskGetStackHighWaterMark();
查询运行中,栈的最小剩余空间。(可用来做栈空间的规划,可进行实测得到运行的最小剩余空间,来推断应该对任务规划多少栈空间。)
扩展:是否可以运用该函数,完成预先判断栈溢出的功能,可规定如果程序运行中最小剩余空间超过定义的最小值后,对该任务进行关闭,并扩大其栈空间后再开启,如果可行,则可达到自动栈空间规划。
vApplicationStackOverflowHook();
栈溢出钩子函数。
可运用该函数完成栈溢出的处理,如果程序还能挽回,则可进行相应的操作。

附:

仿真时发现不能打断点
在项目Option->C/C++compiler->Output选项卡中需勾选Generate debug informat设置。


http://www.kler.cn/a/105192.html

相关文章:

  • Kafka - 异步/同步发送API
  • 使用spring boot的程序主线程中异步访问外部接口
  • Python---练习:使用for循环嵌套实现打印九九乘法表
  • 【异常】理解Java中的异常处理机制
  • openCV的CUDA GPU 版本安装 (Ubuntu windows 通用)
  • AMD大规模裁员15%? 赔偿N+7?官方回应来了 | 百能云芯
  • Java零基础入门-赋值运算符
  • 【会议征稿通知】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)
  • 树形数据增删改查
  • 前端精度问题 (id 返回的和传给后端的不一致问题)
  • Kotlin Lambda表达式与标准库中的高阶函数
  • python re 使用非捕获组来忽略第一个value的匹配结果
  • Python---Socket 网络通信
  • http post协议实现简单的rpc协议,WireShark抓包分析
  • 数据库Redis(二):基本数据类型
  • 经典卷积神经网络 - ResNet
  • leetcode经典面试150题---2.移除元素
  • Redis笔记
  • 数据结构——10.24
  • 【API篇】六、Flink输出算子Sink