摘要:
最近这几天一直给tinyOS挂载外设,从最简单的LED、KEY,再到串口,这些都没什么大问题,无非就是先初始化tinyOS,再初始化硬件外设,接着启动tinyOS,然后tinyOS去寻找优先级最高的任务并运行。 但是我把MPU6050按照这步骤,发现MPU6050初始化和DMP初始化没什么问题,可就 阅读全文
摘要:
今天和一个小伙伴讨论了一下基于cortex-m3内核的RTOS在任务切换时的程序流程,小伙伴说国内某搜索引擎都搜不到这类的信息,所以我才打算写下来,硬件平台是stm32f1。 这里的切换有两种情况: 第一种:从main函数跳到任务一时的程序流程; 第二种:从任务一跳到任务二时的程序流程。 先说第一 阅读全文
摘要:
__asm void xPortPendSVHandler( void ) { extern uxCriticalNesting; extern pxCurrentTCB; extern vTaskSwitchContext; PRESERVE8 //栈的8字节对齐 mrs r0, psp //读取当前psp进程指针,存入r0 isb /* 获取当前任务控制块 */ ldr r3, =pxCurr 阅读全文
摘要:
在这里,非常感谢《cortex-cm3权威指南》的翻译者。 PendSV 的典型使用场合是在上下文切换时(在不同任务之间切换)。 例如, 一个系统中有两个就绪的任务,上下文切换被触发的场合可以是: 1 执行一个系统调用 2 系统滴答定时器(SYSTICK)中断,(轮转调度中需要) 让我们举个简单的例 阅读全文
摘要:
任务的状态: 未创建:只定义了任务代码,未调用tTaskInit()初始化 就绪:任务已经创建完毕,且等待机会占用CPU运行 运行:任务正在占用CPU运行代码 延时:任务调用tTaskDelay()延时 挂起:任务暂停运行 等待事件:任务正在等待某个时间发生,同时设置一个超时时间,这个任务会在事件控 阅读全文
摘要:
任务的状态: 未创建:只定义了任务代码,未调用tTaskInit()初始化 就绪:任务已经创建完毕,且等待机会占用CPU运行 运行:任务正在占用CPU运行代码 延时:任务调用tTaskDelay()延时 挂起:任务暂停运行 阅读全文
摘要:
集合 创建线性表 解散 销毁线性表 长度 得到线性表的长度 出列 从线性表删除一个元素 添加 在线性表特定的位置添加元素 线性表的一些常用操作 创建线性表 销毁线性表 清空线性表 将元素插入线性表 将元素从线性表中删除 获取线性表中某个位置的元素 获取线性表的长度 小结: 1、线性表在程序中表现为一 阅读全文
摘要:
线性表的定义 1、线性表(List)是零个或多个数据元素的集合 2、线性表中的数据元素之间是有顺序的 3、线性表中的数据元素个数是有限的 4、线性表中的数据元素类型必须相同 定义: 线性表是具有相同类型的n(>=0)个数据元素的有限序列。(a1, a2, …, an),ai 是表项,n 是表长度。 阅读全文
摘要:
算法效率的度量: A、事后统计法:比较不同算法对同一组输入数据的运行处理时间。 缺陷: 1、为了获得不同算法的运行时间必须编写相应程序。 2、运行时间严重依赖硬件以及运行时的环境因素。 3、算法的测试数据的选取相当困难 事后统计法虽然直观,但是实施困难且缺陷多,一般不予考虑。 B、事前分析估算:依据 阅读全文
摘要:
数据结构只是静态的描述了数据元素之间的关系。 高效的程序需要在数据结构的基础上设计和选择算法。高效的程序包括恰当的数据结构与合适的算法。 算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列,算法是独立存在的一种解决问题的方法和思想。对于算法而言,语言并不重要,重要的是思想。前面这句,要一分 阅读全文