在运行RTOS的嵌入式系统中,获取每个线程的CPU使用率,栈空间使用情况,堆空间使用情况对于配置其基本参数和进行各种优化调试是至关重要的。FreeRTOS提供了相关的接口,我们只需稍加改动即可很方便将其用起来。
要开启相关功能,首先freertos_config.h里面,把下面这些宏开起来。
此外还要提供两个回调函数,先这里把函数名加到宏定义里面去。
开发时,除调试器以外,也经常使用printf结合串口来输出文本方式的数据或者消息。这种方式蛋疼之处在于:
1、printf使用时栈的占用会迅速升高。尤其是这种小型嵌入式系统,每个任务的栈空间都分配的比较小,如果各种用,很快内存就不够了,一方面,如果出现栈溢出,在这类没有MMU的处理器上找到源头很费事,其不会立刻出错,覆盖掉了其他任务的数据才导致出错,“运气好”的话,可以潜伏甚至好几个版本不被发现。
2、printf使用时会额外增加处理时间,导致程序运行情况和发生一定变化,尤其是如果在中断里面影响最大。
3、printf存在重入问题,主要在于最终调用串口输出那块。即使使用互斥量保护,想想如果在线程用着一半时候进了中断又调用了printf,会咋样?
因此我专门实现一个模块来完成这个任务,需要输出消息的线程或者中断程序通过队列将内容发送至调试模块,由其统一转换和输出,酱紫只需
ANT相对简单,先来ANT的。
1、设置ANT的事件回调函数,就是on_ant_evt了,ANT的事件几乎就一个RX和TX需要处理,非常简单后面详细说
2、调下ant_stack_static_config()让他自己去配置各种啥buffer size之类的东东
3、调下ant_plus_key_set()把刚刚说的那个key设置好
然后完事了,接下来可以开启通道干活了
下面这个就是通道配置就是功率计传感器的配置:
使用芯片的通道0(最多
这几年,运动自行车玩家激增,各种相关的电子传感器如功率计,心率计,速度踏频传感器,电变等等以及各种高端表头成为每个车友的标配,ANT+和蓝牙4.0这些本来仅会从IT人士口中说出的词汇,也变成了车友,跑友们的口头禅。然而,他们对于普通大众而言依然只是最熟悉的陌生人,到底有什么特点,选支持哪款的好,安装使用过程中有些什么注意事项,往往只是道听途说。车友们曾经也是捣鼓机械零件出身的,自然对这类神奇事物有着一探究竟的好奇心。因此我就趁此机会,以一个专业开发者身份,从车友们最关心的几个方面入手,从技术角度来对这两个协议进行一番分析,满足下大家的好奇心,也让大家更科学正确的用好相关的传感器。
Summary: