07 2017 档案
摘要:单链表的局限 单链表的结点都只有一个指向下一个结点的指针 单链表的数据元素无法直接访问其前驱元素 单链表的改进 双向链表的定义在单链表的结点中增加一个指向其前驱的pre指针 双向链表拥有单链表的所有操作 创建链表 销毁链表 获取链表长度 清空链表 获取第pos个元素操作 插入元素到
阅读全文
摘要:首先,打开 Micrium 公司官方网站(http://micrium.com/),点击“Downloads”选项卡进入下载页面,在“Brouse by MCU Manufacturer”栏目展开“STMicroelectronics”,单击“Viewall STMicroelectronics”。
阅读全文
摘要:本章主要对 uC/OS-III 实时操作系统做一些概要介绍,使读者对 uC/OS-III 有个整体的浅 认识,为后面的章节的详细讲解做一个铺垫。 下图是 uC/OS-III 系统从底层到上层的文件结构。 ①配置文件,通过定义这些文件里宏的值可以轻易地裁剪 uC/OS-III 的功能。②用户应用文件,
阅读全文
摘要:目录: 1.ucos-III前言 2.uC/OS-III 概要 3.移植 uC/OS-III 到 STM32 4.调度器 5.uC/OS-III 时钟节拍,时间管理,时间片调度
阅读全文
摘要:前言 自从 2009年 uC/OS-III实时操作系统面世以来,uC/OS-III的性能和稳定性已经日趋完善。uC/OS-III对前面版本取精弃粕,推陈出新,功能和性能比起 uC/OS-II已经上了很大一步台阶。uC/OS-III 正在逐渐取代 uC/OS-II,学习 uC/OS-III 已经成为许
阅读全文
摘要:有一个函数,是我们从学习c语言就开始的第一天就接触的,那就是printf函数,可是这个家族的函数,带给我们的便利却不是一点半点,所以写一篇用法总结。 1.printf函数 格式化输出,可以输出八进制,十进制,十六进制,可以输出字符串,%p输出地址。基本的东西就不在赘述了。 printf是有返回值的,
阅读全文
摘要:以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24552&extra=page%3D3%26filter%3Dtypeid%26typeid%3D28 俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,
阅读全文
摘要:单链表的局限 有些线性关系是循环的,即没有队尾元素 一年12个月,是重复的,12月过了又要回到1月,对于这样的线性元素规律,前人给我指明了一条更好的道路:循环链表。 循环链表拥有单链表的所有操作 创建链表 销毁链表 获取链表长度 清空链表 获取第pos个元素操作 插入元素到位置pos
阅读全文
摘要:在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望能用 DMA 来操作,针对这个需求, STM32 专门定制了DMA2D 外设,它可用于快速绘制矩形、
阅读全文
摘要:以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24507&highlight=%B5%B1%C7%B0%D6%F7%C1%F7%B5%C4%D0%A1%D0%CD%C7%B6%C8%EB%CA%BD%2BGUI
阅读全文
摘要:目录 第一章: 当前主流的小型嵌入式 GUI 第2章 初学 emWin 的准备工作及其快速上手
阅读全文
摘要:虽然面试的时候,都会叫你不使用c库函数,自己完成某某函数的编写,但是库函数毕竟更让人信赖,我们没有任何理由怀疑库函数而使用自己的版本。不过当做练习,自己还是可以实现一下的。这里记录一下5th c primer附录中的可能用到的库函数。 size_t strlen (const char *s)返回字
阅读全文
摘要:以下教程(大部分章节)(尤其理论介绍部分)转载自安富莱电子,官网链接: http://forum.armfly.com/forum.php 然后根据安富莱的教程自己做了分析和测试,希望大家共同进步。 其中也有个别章节是正点原子和野火的教程。 提高篇开始是自己根据使用经验的原创,期间也有参考官方资料的
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的初始化流程推荐的初始化流程如下,本教程配套的所有例子都是采用的这种形式,当然,不限制必须采用这种初始化方式,适合自己项目的才是最好的: 中断优先级分组设置强烈推荐用户将 Cortex-M3
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法,tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 embOS,RTX 和 uCOS-III(
阅读全文
摘要:STM32F103 如何进入待机模式在 FreeRTOS 系统中,让 STM32 进入待机模式比较容易,调用固件库函数PWR_EnterSTANDBYMode 即可。 STM32F103 如何退出待机模式让 STM32 从待机模式唤醒可以通过外部复位(NRST 引脚)、 IWDG 复位、 WKUP
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 如何进入停机模式在 FreeRTOS 系统中,让 STM32 进入停机模式比较容易,调用固件库函数 PWR_EnterSTOPMode即可,不过要注意:为了进入停机模式,所有的外部中断的请
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 低功耗是 MCU 的一项重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。 STM32F103 睡眠模式介绍说明:在 FreeRT
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 通过前面的几个章节,我们基本已经完成了 FreeRTOS 所有功能的讲解,本章节为大家介绍一种使用独立看门狗监测任务执行状态的方法,借此为大家提供一种在软件或者硬件死机时,FreeRTOS 系统如何保证系统复
阅读全文
摘要:本章参考资料:《STM32F4XX 中文参考手册》 IWDG 章节。学习本章时,配合《STM32F4XX 中文参考手册》 IWDG 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 IWDG 简介STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗, 独立看门狗号称宠物狗,窗口看门
阅读全文
摘要:本章参考资料:《STM32F4xx 参考手册 2》、《STM32F4xx 规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的液晶屏参数可查阅《5.0 寸液晶屏数据手册》配套资料获知。 显示器简介显示器属于计算机的 I/O 设备,即输入输出设
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 动态内存管理,动态内存管理是 FreeRTOS 非常重要的一项功能,前面章节讲解的任务创建、 信号量、 消息队列、 事件标志组、 互斥信号量、 软件定时器组等需要的 RAM
阅读全文
摘要:启动GDB:(其中我的app是编译之后的可执行文件) 退出命令:quit或者简写q 帮助获取: gdb通过完备的在线帮助,使我们使用起来更加方便.所有的帮助信息都是通过help命令获得的,运行help命令时,如果不指定参数,gdb将输出分类信息: 可以通过分类名作为help指定的参数来获得帮助,以断
阅读全文
摘要:以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 计数信号量的另一种实现方式 基于任务通知(Task Notifications)的计数信号量,这里我们将这种方式实现的计数信号量称之为任务计数信号量。 任务计数信号
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节讲解 FreeRTOS 任务间的同步和资源共享机制,二值信号量。 二值信号量是计数信号量的一种特殊形式,即共享资源为 1 的情况。 FreeRTOS 分别提供了二值信号量和计数信号量,其中二值信号量可以
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节开始讲解 FreeRTOS 任务间的同步和资源共享机制,计数信号量。 FreeRTOS 中计数信号量的源码实现是基于消息队列实现的。 信号量的概念及其作用信号量(semaphores)是 20 世纪 6
阅读全文
摘要:这一课最后实现的链表,和普通链表不同,借鉴了linux内核链表的思想,这也是企业使用的链表。 基础介绍: 顺序表的思考 顺序表的最大问题是插入和删除需要移动大量的元素!如何解决?A:在线性表数据元素之间空出位置,为以后插入使用。B:这样不行!中间无论空多少都有可能用完!A:那不是无解了嘛!B:我觉得
阅读全文
摘要:2.1 概览基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的。 2.2队列的特性数据存储队列可以保存有限个具有确定长度的数据单元。队列可以
阅读全文
摘要:-c++内置了异常处理的语法元素try...catch... -try语句处理正常代码逻辑 -catch语句处理异常情况 -try语句中的异常由对应的catch语句处理 -c++通过throw语句抛出异常信息 ——c++异常处理分析 - throw抛出的异常必须被catch处理 -当前函数能够处理异
阅读全文
摘要:以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 的一个重要的通信机制 消息队列,初学者要熟练掌握,因为消息队列在实际项目中应用较多。 消息队列的概念及其作用消息队列就是通过 RTOS 内核提供的服务,任务或中断服
阅读全文
摘要:内存泄漏 -动态申请堆空间,用完后不归还 -c++语言中没有垃圾回收机制 -指针无法控制所指堆空间的生命周期 代码练兵场: main.cpp: 输出: 代码知识点解释: const_cast<SmartPointer<T>&>(obj).m_pointer=nullptr;,在拷贝构造函数中,obj
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 支持的定时器组,或者叫软件定时器,又或者叫用户定时器均可。软件定时器的功能比较简单,也容易掌握。 被称为定时器组是因为用户可以创建多个定时器,创建的个数是可配置的。 定时器
阅读全文
摘要:本章参考资料:《 STM32F4xx 参考手册 2》、《 STM32F4xx 规格书》、库帮助文档《 stm32f4xx_dsp_stdperiph_lib_um.chm》。关于 SDRAM 存储器,请参考前面的“ 常用存储器介绍”章节,实验中 SDRAM 芯片的具体参数,请参考其规格书《 IS42
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一。也许有不理解的初学者会问采用事件标志组多麻烦,搞个全局变量不是更简单?其实不然,在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后就
阅读全文
摘要:如果遗忘了函数模板和类模板,请复习之前的c++随笔对应章节。
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的时钟节拍任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时、 超时等与时间相关的事件。时钟节拍是特定的周期性中断,这个中断可以看做是系统心跳。 中断之间的时间间隔取决于不同的应用,一
阅读全文
摘要:顺序存储结构 在C语言中可以用一维数组来实现顺序存储结构 获取元素操作 判断线性表是否合法 判断位置是否合法 直接通过数组下标的方式获取元素 插入元素算法 判断线性表是否合法 判断插入位置是否合法 把最后一个元素到插入位置的元素后移一个位置 将新元素插入 线性表长
阅读全文
摘要:malloc用于动态申请内存,这个学过C语言的都知道。忘记了在哪本书上看到,malloc申请的内存不一定是连续,于是一直记住了。这句话有错吗?没有!但是当时只是记住了这个知识点,而没有深入的思考。直到今天,思考一个问题: char *a=(char *)malloc(10); *(a+1)与a[1]
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 调度锁调度锁就是 RTOS 提供的调度器开关函数,如果某个任务调用了调度锁开关函数,处于调度锁开和调度锁关之间的代码在执行期间是不会被高优先级的任务抢占的,即任务调度被禁止。这一点要跟临界段的作用区分开,调度
阅读全文
摘要:线性表的讨论 线性表的操作 线性表的一些常用操作 创建线性表 销毁线性表 清空线性表 将元素插入线性表 将元素从线性表中删除 获取线性表中某个位置的元素 获取线性表的长度 先把方法声明出来,下一节课开始实现: 小结
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 临界段代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断。为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即开中断。 FreeRTOS 临界段相关知识
阅读全文
摘要:线性表的定义 线性表(List)是零个或多个数据元素的集合 线性表中的数据元素之间是有顺序的 线性表中的数据元素个数是有限的 线性表中的数据元素的类型必须相同 线性表的性质 性质 a0为线性表的第一个元素,只有一个后继 an为线性表的最后一个元素,只有一个前驱 除a0和an外
阅读全文
摘要:知道了数据结构对我们之后的工作学习是影响深远的之后,那么,让我们从下一课开始,进入正题。
阅读全文
摘要:下一篇随笔终于到了和C语言分道扬镳的时候了,这三课知识和C语言中的这里一样(点击查看)。下一课开始,对c和c++有所区分了。
阅读全文
摘要:这个和C语言本课的介绍一样,为了让这个系列不存在间断课程,特用此占位符——(点击进入C语言版本课介绍),还有几课的基础前言知识是一样的,第七课开始和C语言分层。
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章教程为大家将介绍 FreeRTOS 操作系统支持的任务调度方式:抢占式,时间片和合作式,这部分算是 FreeRTOS 操作系统的核心了。 对于初学者来说,要一下子就能够理解这些比较困难,需要多花些时间把这
阅读全文
摘要:任务优先级说明下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固。 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 进行配置的,用户实际可以使用的优先级范围是 0
阅读全文
摘要:算法效率的度量 事后统计法 比较不同算法对同一组输入数据的运行处理时间 缺陷 为了获得不同算法的运行时间必须编写相应程序 运行时间严重依赖硬件以及运行时的环境因素 算法的测试数据的选取相当困难事后统计法虽然直观,但是实施困难且缺陷多,一般不予考虑。 程序效率估算练习二重循环估算
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断控制器。对于 M3 和 M4 内核的 MCU,每个中断的优先级都是用寄存器中的 8 位来设置的。 8
阅读全文
摘要:本章参考资料:《 STM32F4xx 参考手册》、《 STM32F4xx 规格书》、库帮助文档《 stm32f4xx_dsp_stdperiph_lib_um.chm》。学习本章时,配合《 STM32F4xx 参考手册》高级定时器章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。特别说明,本书
阅读全文
摘要:这个和C语言本课的介绍一样,为了让这个系列不存在间断课程,特用此占位符——(点击进入C语言版本课介绍)
阅读全文
摘要:程序效率越高越好,并不是越短越好。在某些场合下,我们需要写出别人看不懂的算法最好,但是在一个团队开发中,算法可读性应该尽可能高。 算法的定义 算法是特定问题求解步骤的描述 在计算机中表现为指令的有限序列算法是独立存在的一种解决问题的方法和思想。对于算法而言,语言并不重要,重要的是思想 算法的特性
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家介绍 FreeRTOS 的调试方法,这里的调试方法主要是教会大家如何获取任务的执行情况,通过获取的任务信息,可以进一步的配置和优化工程,这种方法非常实用,建议初学者必须掌握。 串口打印调试说明很多
阅读全文
摘要:本章参考资料:《 STM32F4xx 参考手册》、《 STM32F4xx 规格书》、库帮助文档《 stm32f4xx_dsp_stdperiph_lib_um.chm》。学习本章时,配合《 STM32F4xx 参考手册》 基本定时器章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。特别说明,本
阅读全文
摘要:时至今日,程序已经不仅仅是数据结构和算法了,我们需要使用面向对象的思维方式来解决很多现实生活地问题, 这样的问题可以不使用算法也不使用数据结构。但是,我们依旧需要学习这门课程,因为在我的专业中,这属于必修课程,一个不会算法的程序员,注定是可以轻易被替代的,况且,作为研究生,还有更高层次的数字信号处理
阅读全文
摘要:数据结构起源 计算机从解决数值计算问题到解决生活中的问题 现实生活中的问题涉及不同个体间的复杂联系 需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系 关键概念 数据 – 程序的操作对象,用于描述客观事物 数据的特点: 可以输入到计算
阅读全文
摘要:理解程序的本质程序是为了实际的问题而存在从本质上而言,程序是解决问题的步骤描述 一小步的进阶首先理解实际问题! 确认问题类型– 如:数值计算,求最小值个数 确认求解的步骤– 如:打开文件,读数据,关闭文件,计算和问题:如何判断求解步骤的好坏 通过下面的例子说明: 三个函数输出相同,可是很明显,第
阅读全文
摘要:其实,大多时候,我们大多都有一种感觉,能看懂别人的代码,可是自己写不出来,自己掌握的,是语言的基础,局限于语法层次,要想写出算法,需要数据结构的铺垫,后期也需要强大的数学推导能力。 数据结构不等于算法,但确实进阶算法的必备基础,比如,设计实现一个计算器程序,要能够做到识别整个计算表达式,不使用数据结
阅读全文
摘要:以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的任务栈设置不管是裸机编程还是 RTOS 编程,栈的分配大小都非常重要。 局部变量,函数调用时的现场保护和返回地址,函数的形参,进入中断函数前和中断嵌套等都需要栈空间,栈空间定义小了会造成系
阅读全文
摘要:这堂课,我们来介绍可能是命令行最酷的特性。它叫做 I/O 重定向。“I/O” 代表输入/输出,通过这个工具,你可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。也可以把多个命令连接起来组成一个强大的命令管道。为了炫耀这个工具,我们将叙述以下命令: • cat -连接文件• sort -
阅读全文
摘要:我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。文件系统中存储的最小单位是块(Block),一个块究竟多大是在
阅读全文
摘要:C99中规定宏可以像函数一样带有可变参数,实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个英文输入法下的句号)。这样预定义宏__VA_ARGS__就可以被用在替换部分中,以表明省略号代表什么。 eg: #include<stdio.h>#define Variable_Macro(..
阅读全文
摘要:SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,要求通讯速率较高的场合。 • 标号1处, NSS信号线由高变低,是SPI通讯的
阅读全文
摘要:在这之前,我们已经知道了一系列神秘的命令,每个命令都有自己奇妙的选项和参数。在 这一章中,我们将试图去掉一些神秘性,甚至创建我们自己的命令。这一章将介绍以下命令:• type –说明怎样解释一个命令名• which –显示会执行哪个可执行程序• man –显示命令手册页• apropos –显示一系
阅读全文