摘要:
本文的目的旨在描述Vxworks 操作系统中,如果需要再添加一个网口,然后同时使用两个网口的方法。 例如,原来使用下载程序的是网口0,在硬件已经满足的情况下,需要添加以下代码。 一、打开系统的usrAppInit.c文件 二、在函数usrAppInit函数中,添加以下代码: 1.ipAttach(1 阅读全文
摘要:
在上次项目中用到了LTC6804这块片子,初次使用它的采集精度确实令我惊讶到了,设备用于监测2V的铅酸电池组,硬件上几乎没有加任何滤波,直接读取数据就能达到3mv以下的精度,片子真的很好用。 下面总结一下自己的使用心得。 LTC6804是一款专门用来做多节电池电池组的监测芯片,最高可监测12节电池, 阅读全文
摘要:
电量(SOC)算法 除了参数的监控与保护之外,作为BMS系统,其中最重要的功能还有一项,那便是SOC的计算。 SOC,全称是State of Charge,系统荷电状态,也叫剩余电量,代表的是电池使用一段时间或长期搁置不用后的剩余容量与其完全充电状态的容量的比值,常用百分数表示。 其取值范围为0~1 阅读全文
摘要:
什么是BMS? 首先必须弄懂一个定义,什么是BMS? BMS其实就是BATTERY MANAGEMENT SYSTEM的缩写,中文名字叫电池管理系统,顾名思义,是专门用来进行锂电池运行管理的模块,对象是锂电池。 对于一般的终端用户而言,锂电池保护板其实并不存在,或者说,他们并不知道正在自己使用的产品 阅读全文
摘要:
上面讲解了空闲任务的建立过程,空闲任务是系统自动建立的,无论你是否需要它都必然会被建立。 其实用户任务的建立过程和空闲任务完全一样,同样也是栈空间初始化,变量初始化,把任务信息与那几个链表关联起来。 现在举一个例子,我要新建一个优先级为10的启动任务。 但我们需要建立用户任务的时候,调用的也是OST 阅读全文
摘要:
本章重点讲解空闲任务的建立过程 任务建立函数定义如下: 21~23行,判断我们传递进来的参数优先级是否合法,如果不满足,直接退出(当前系统支持最大64个任务,因此优先级必须小于64)。 26~29行,判断当前系统的中断状态,变量OSIntNesting的意义之前讲过,如果它大于0,那就代表目前处于中 阅读全文
摘要:
做过软件的同学都知道,任何一个程序都必须要有初始化的过程,在初始化过程中,我们会对外围硬件以及CPU的奔跑环境进行初步的设置,以便接下来的使用和调度。 以前在写单片机逻辑程序之时,系统初始化过程大概分为两种: ①外围硬件的初始化(比如MCU寄存器,时钟,看门狗,串口,IO口,SPI等等) ②代码内参 阅读全文
摘要:
整个UCOSII嵌入式操作系统的任务调度策略便是如此,现在进行一个总结: ①某个任务在执行中,每隔一定周期发生滴答时钟中断,在中断中遍历整个任务链表,更新每个任务的延时时间,修改就绪状态。 ②任务执行完毕后,进入延时函数,在延时函数中会把当前任务挂起(清空当前任务的就绪状态,使其进入未就绪状态),然 阅读全文
摘要:
再回到那个重要的函数: 在经过了OS_SchedNew的处理后,OSPrioHighRdy变量里面存的,自然就是即将准备执行的那个任务的优先级。 那么这个OSTCBPrioTbl[OSPrioHighRdy]数组又是什么意思? 我们在前面就已经看过它的定义了: 在UCOSII中管理任务的是一个双向的 阅读全文
摘要:
依然是这一部分,接下来的重点是这个函数:OS_Sched() 这个函数实在是太重要了,因此我不得不慎重。 首先看一下官方的注释: ************************************************************************************* 阅读全文