数据结构与算法-栈的设计与应用 0 概述本文主要涉及栈的设计与栈的应用,栈的后进先出特性使其广泛应用于各种问题解决方案中,这里主要介绍以下5种问题的栈方法解决方案。1)进制转换;2)括号匹配;3)多项式求解;4)八皇后问题;5)路径规划问题。1 栈的设计栈也是一种线性结构,只是其操作仅限于栈顶,只能进行压栈和出栈操作,所以其可以从列表和向量继承而来,并增添对应的压栈(Push)和出栈(Pop)接口,而对其他操作接...
数据结构与算法-向量的设计及其查找、排序算法 0 概述本文主要涉及向量(vector)的设计及其查找、排序算法。1)向量的设计主要包括当前元素的数目的追踪、内存的管理(扩大与缩小)、删除、插入等基本操作;2)向量的查找由于向量具有随机读取的性质,查询效率可以大大提升,本文主要介绍二分查找;3)向量的基本排序方法主要介绍冒泡排序、插入排序与归并排序。1 向量的设计向量的设计主要包括当前元素数目的追踪和内存管理以进行基本的删除、插入等...
数据结构与算法-列表(双向链表)设计及其排序算法 0 概述本文主要涵盖列表(双向链表)的设计及其排序算法的总结。列表是一种典型的动态存储结构。其中的数据,分散为一系列称作节点(node)的单位,节点之间通过指针相互索引和访问。为了引入新节点或删除原有节点,只需在局部调整少量相关节点之间的指针。这就意味着,采用动态存储策略,可以大大降低动态操作的成本。1 列表(双向链表)设计1.1 结点的设计列表是由一个个结点链接而成,其基本结构便是节点(...
C/C++ 重载函数 1 定义函数重载是允许多个函数共享一个函数名,但是针对不同参数类型提供不同的操作.2 怎么重载一个函数名在C++中,可以为两个或多个函数提供相同的名字,只要他们的每个参数表唯一就行,也就是或者参数的个数不同,或者参数的类型不同。当一个函数名在一个特殊的域中被声明为多次时,编译器按照如下步骤解释第二个以及后续的声明。如果两个函数的参数表中参数的个数或类型不同时,则认为两个函数是重...
外设驱动 SDIO及SD存储卡 1、SDIO接口SDIO接口如下图所示,起始SDIO_CK是主机到卡之间的时钟;SDIO_CMD为命令和响应信号,主机和卡之间的命令与响应信息通过该引脚传输;SDIO_D[7:0]为双向数据总线,主机与卡之间的数据在这些引脚上传输。2、SDIO通讯流程SDIO总线通讯基于命令和数据传输。多媒体卡/SD/SD I/O总线上的基本事务是命令/响应事务。一般的处理过程如下:1)开始操作的流程为...
C/C++ 二维指针数组与修改指针所指对象的函数传递问题 1、二维指针数组函数传递问题1、二维数组的函数传递问题在考虑这个问题前,我们首先要了解数组a[2]的a的含义,其实a可以看作一个指向数组元素类型并指向数组内第1个元素的指针。当我们要将二维数组作为函数参数时,可以参照一维数组的方法,一维数组sd[2]作为参数时,是将指向第1个元素的地址传递进去并给出元素个数,假设函数原型为 fun1(int *p_num),则调用时为func1(sd,2)。...
MC9S12XE bootloader开发 1、几条重要语句1、RELOCATE_TO该语句在prm文件中使用,如果一个代码段在运行时被移动到另一个不同的地方,则使用该语句定义。由于MC9S12XE系列单片机的FLASH模块在运行时不同同时进行读写,所以需要将对FLASH进行操作的代码移动到RAM内运行,而且如果在进行FLASH操作时,若有中断发生,那么也需要将中断程序移动到RAM中。所以对于存放FLASH操作和中断代码的内存需要利用R...
MC9S12XE 启动过程 1.CodeWarrior 5.1智能链接器C程序经过编译后生成obj文件,然后链接器将其链接成最终可执行程序。在CodeWarrior 5.1中链接器生成.abs文件,然后烧录器再将.abs文件转换成.abs.s19文件。具体链接过程为:链接器将导入的obj文件中程序用到的初始化数据、启动数据结构、需要拷贝的数据、堆栈、固定页代码、非固定页代码、数据等代码或数据类型根据prm文件中设置的对应代...
MC9S12XE 内存分配 1、内存分配1.逻辑地址和全局地址的映射关系9S12XE系列的逻辑地址与全局地址映射关系如下图所示:其中逻辑地址0x0000-0x07FF的2K空间对应全局地址的0x0000-0x07FF;逻辑地址0x0800-0x0BFF的1K EEPROM空间通过EPAGE映射非固定页EEPROM到全局地址0x10_0000-0x13_FBFF,逻辑地址0x0C00-0x0FFF的1K固定页EEPRO...
MPC5744P-NXP各个模块(驱动)示例代码 作者各个模块的调试是基于参考手册并参考官方示例代码完成的,S32中有5746C、5748G、5744P等的示例代码,NXP驱动示例代码获取方法如下:1、NXP驱动示例代码1)2)3)2、开发用Demo板资料我的开发板是DEVKIT-MOTORGD,NXP官方为其提供了学习资料,当前(2019年4月21日)界面如下,点击文档与软件即可查阅。其中DEVKIT-MPC5744P Quick S...
MPC5744P-UART(LIN)模块 1.结构介绍1、数据帧格式5744P的UART功能集成在LIN模块中,所以在LIN模块中介绍UART模式的使用。UART模式下的数据帧格式有8位、9位、16位和17位,其中8位和16位数据帧格式最后一位可为数据位也可为Parity位,9位和17位数据帧格式最后一位为Parity位。UART模式下用通过配置UARTCR寄存器中的WL1和WL0组成WL[1:0]来进行数据帧格式的选择。2、缓存器...
MPC5744P-eTimer模块 1.通道结构5744每个eTimer模块含有6个相同的计数通道,每个计数通道含有16位计数器、分频器、保持寄存器各一个,捕捉寄存器、比较寄存器、比较预加载寄存器各两个,还有四个控制寄存器,其通道结构如下图:2、计数模式、eTimer模块含有多种计数模式,可根据实际情况选择合适的计数模式1、计数上升沿;2、计数跳边沿(上升沿和下降沿均计数);3、当二次输入为高时计数;4、QUADRA...
MPC5744P-CAN模块 1、CAN模块结构5744CAN模块主要由CHI(Control Host Interface)、PE(Protocol Engine)和MBs三个部分组成,其中CHI负责发送仲裁和接收匹配,PE负责时钟等的配置,MBs进行消息的存储。结构如下图所示:2、MB(Message Buffer)结构5744含有多达64个MB(Mailbox)进行数据的收发,通过配置对应MB的C/S寄存器来进行...
MPC5744P-DMA模块及SPI DMA发送 1、MPC5744P 主从机模块mpc5744含有z4d_0 core、z4d_0 core Nexus、DMA、SIPI、FlexRay五个主机模块和FLASH CTRL、PRAM CTRL、PBRIDGE #0、PBRIDGE #1、TCM五个从机模块,其中z4d_0 core、z4d_0 core Nexus、FlexRay连接主机端口M0、M1、M6,DMA和SIPI公用主机端口M5;F...
uCOS-II 总结 1、任务调度1.调度uCOS-II的任务由任务控制块管理,在任务每个循环的末尾通过调用OSTimeDly()或者OSTimeDlyHMSM()来将当前任务从任务就绪表移除,并将该任务控制块内OSTCBDly赋予新值,然后进行一次任务调度让出CPU控制权。uCOS-II含有时钟节拍,时钟节拍在开中断的情况下定时触发时钟节拍中断,时钟节拍中断遍历任务控制块链表并将每个任务控制块内的OSTCBDl...
uCOS-II PC编译环境搭建(基于BC45) 1.软件安装基于BC45的uC/OS-II的编译环境需要BC45和TASM5.0两个软件,这是因为BC45不含TASM5.0所以需要额外安装TASM5.0。1.安装BC45,一般默认为C:\BC45。由于BC45不支持64位系统,所以需要win7 32位或xp系统。本文在虚拟机环境下的xp系统完成。2.安装TASM5.0。在安装完成后需要将TASM5.0安装目录下BIN文件内的TASM.EX...