自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西贡小傻

九唔搭八

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

转载 43.2-CAN协议

1.帧的种类 通信是通过以下 5 种类型的帧进行的。 • 数据帧 • 遥控帧 • 错误帧 • 过载帧 • 帧间隔 另外, 数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。 2.数据帧 数据帧由 7 个段构成。 (1) 帧起始 表示数据帧开始的段。 (2) 仲裁段 表示该...

2018-07-26 17:04:18 365

转载 uC/OS-III-7.2-uC/OS-III添加任务到就绪队列

1.uC/OS-III提供很多服务可以把任务添加到就绪列表中。 最明显的服务是OSTaskCreate(), 它通常创建准备运行的任务并将任务放入就绪列表中。如图6-6所示,就绪列表中该优先级中已经有两个任务了。OSTaskCreate()就会将这个任务插入到列表的未部。 ( 1).在调用OSTaskCreate()之前, 已经有两个任务在就绪列表中的该优先级中了。 ( 2).一个新的TC...

2018-07-25 10:45:34 326

转载 uC/OS-III-7.1-uC/OS-III就绪列表

准备好运行的任务被放到就绪列表中, 如图6-1。就绪列表是一个数组( OSRdyList[]),它一共有OS_CFG_PRIO_MAX条记录,记录的数据类型为OS_RDY_LIST(见OS.H)。就绪列表中的每条记录都包含了三个变量 .Entries 、 .TailPtr 、 .HeadPtr。 .Entries中该优先级的就绪任务数。当该优先级中没有任务就绪 时, .Entries就会被...

2018-07-25 10:40:32 214

转载 uC/OS-III-7.0-uC/OS-III就绪列表(优先级)

准备运行的任务被放置于就绪列表中。就绪列表包括2个部分:位映像组包含了优先级信息,一个表包含了所有指向就绪任务的指针。 1.优先级 图6-1到6-3显示了优先级的位映像组。它的宽度取决于CPU_DATA的数据类型( 见CPU.H), 它可以是8位、 16位、 32位。根据处理器相应地设定。 uC/OS-III支持多达OS_CFG_PRIO_MAX种不同的优先级( 见OS_CFG.H)。在...

2018-07-25 10:10:56 433

转载 uC/OS-III-6.4-uC/OS-III任务管理

1.OSTaskCreate () 要使用 uC/OS 的任务必须先声明任务控制块和创建任务,调用 OSTaskCreate () 函数可以创建一个任务。 2.OSTaskSuspend () OSTaskSuspend () 函数用于挂起一个任务,令任务暂停运行。 任务可以多次调用 OSTaskSuspend() 对任务进行挂起操作,即一个任务被挂起是可以嵌套的,但是想要将任务脱离挂起状...

2018-07-25 09:10:33 389

转载 汇编-7.1-灵活定位内存地址的方法

1.[bx+idata] 我们用[bx]的方式来指明一个内存单元,还可以用一种更灵活的方式来指明内存单元:[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)。 如:mov ax,[bx+200] 数学化的描述为:(ax)=((ds)*16+(bx)+200) 2.用[bx+idata]的方式进行数组的处理 原来定位字符串的字符:st...

2018-07-24 19:02:11 239

转载 汇编-7.0-灵活定位内存地址的方法

1.and和or指令 (1).and指令:逻辑与指令,按位进行与运算。 (2).or指令:逻辑或指令,按位进行或运算。 2.ASCII码 如果我们要显示“a”,就要给显卡提供“a”的ASCII码,方法是将“a”的ASCII码写入显存。 3.以字符形式给出的数据 汇编中,用‘… …’的方式指明数据是以字符的形式给出的,编译器将它们转化为相应的ASCII码。 如:db ‘unIX’相当于...

2018-07-24 18:16:46 215

转载 汇编-6.3-将数据、代码、栈存入不同的段

1.将数据、栈、代码存入到一个段中使得程序显得混乱。 2.如果数据、栈、代码需要的空间超过64KB,就不能放在一段中(一个段的容量不能大于64KB(8086CPU的16位的,段的大小2^16Byte))。 3.可以通过定义代码段的方法来定义多个段,然后再在段里面定义需要的数据,或者通过定义数据来取得栈的空间。 程序6.4assume cs:code,ds:data,ss:stack...

2018-07-24 15:49:43 538

转载 汇编-6.2-代码段中使用栈

1.首先要定义可以当作段的内存空间。这段空间应该由系统来分配。assume cs:codesgcodesg segmentdw 123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0start: mov ax,cs mov ss,ax mov ...

2018-07-24 11:07:29 260

转载 uC/OS-III-6.3-uC/OS-III内部任务(中断处理任务 OS_IntQTask())

1.当设置OS_CFG.H中的OS_CFG_ISR_POST_DEFERRED_EN为1时, uC/OS-III就会创建一个任务,它的作用是尽快完成ISR中对post函数的调用, 将信号量、消息等对象先存在媒介中, 退出中断后,由中断处理任务完成将这些对象提交给任务。 2.正如“ 临界段” 所介绍的, uC/OS-III通过开启/关闭中断、锁/开锁调度器管理临界段。如果选择后一种方法, ISR调...

2018-07-23 11:34:40 814

转载 uC/OS-III-6.3-uC/OS-III内部任务(定时器任务 OS_TmrTask())

{这节所说的定时器都是软件定时器} 1.uC/OS-III为用户提供了定时器任务,相应代码在OS_TMR.C中。定时器任务是可选的,通过将OS_CFG.H中的OS_CFG_TMR_EN设置为1使能。当设置为1时,它的代码才会被添加到最终代码中。 2.当定时器任务递减计数变量到0时,任务中就会调用回调函数。回调函数是一个函数, 它被用户定义。 因此, 回调函数可以用来开启或关闭LED、电机、或者...

2018-07-23 11:22:53 431

转载 uC/OS-III-6.3-uC/OS-III内部任务(统计任务 OS_StatTask())

1.这个任务能够统计总的CPU使用率(0到100%),每个任务的CPU使用率( 0到100%),每个任务的堆栈使用量。 2.统计任务在uC/OS-III中是可选的,当设置OS_CFG.H中的OS_CFG_STAT_TASK_EN为1时,统计任务的代码会被包含在程序中。当然, 统计任务的优先级和它的任务堆栈大小在OS_CFG_APP.H中配置。 3.最好在main()中只创建的一个任务,通常叫做...

2018-07-23 11:08:15 716

转载 uC/OS-III-6.3-uC/OS-III内部任务(时基任务OS-TickTask())

几乎所有的实时系统都需要有一个能提供周期性时间的时间源,叫做时基周期或系统周期。 uC/OS-III的时基周期处理程序封装在OS_TICK.C文件中。 OS_TickTask()任务被uC/OS-III创建, 其优先级是用户可配置的。(通过配置OS_CFG_APP.H中的OS_CFG_TICK_TASK_PRIO)。通常设置其优先级较高。 事实上, 它的优先级应该设置比重要任务的优先级稍低。 ...

2018-07-23 10:37:41 799

转载 uC/OS-III-6.3-uC/OS-III内部任务(空闲任务OS_IdleTask())

1.内部任务-空闲任务 在uC/OS-III初始化的时候,它会创建至少2个内部的任务(OS_IdleTask()和OS_TickTask()), 3个可选择的任务 ( OS_StatTask(),OS_TmrTaks(), OS_IntQTask())。这些可选择的任务在编译时由OS_CFG.H中的配置决定。 2.空闲任务 OS_IdleTask() OS_IdleTask()是uC/OS-...

2018-07-23 09:52:43 805

转载 uC/OS-III-6.2-uC/OS-III内部任务管理(TCB)

任务控制块 TCB 1.任务控制块是被uC/OS-III用于维护任务的一个结构体。每个任务都必须有自己的 TCB。 uC/OS-III 在 RAM 中分配 TCB。当调用uC/OS-III提供的与任务相关的函数(以OSTask???()形式命名)时,任务的TCB地址需会被提供给该函数。 TCB的结构定义于OS.H中,如列表 5-3所示(在 OS.H中代码是有注释的)。 TCB中的一些变量可以根据...

2018-07-23 08:52:46 551

转载 汇编-6.1-在代码段中使用数据

1.我们如果要一个程序在加载的时候取得所需要的空间,则必须要在源程序中做出说明。我们通过在源程序中定义段来进行内存空间的获取。 2.我们不能自己随便决定哪段空间可以使用,应该让系统来为我们分配。我们可以在程序中,定义我们希望处理的数据,这些数据就会被编译、连接程序作为程序的一部分写到可执行文件中。当可执行文件中的程序被加载入内存时,这些数据也同时被加载入内存中。与此同时,我们要处理的数据也就自然...

2018-07-22 19:13:34 380

转载 汇编-6.0-包含多个程序段

1.在操作系统的环境中,合法的通过操作系统取得的空间都是安全的,因为操作系统不会让一个程序所用的空间和其他程序以及系统自己的空间相冲突。在操作系统允许的情况下,程序可以取得任意容量的空间。 2.程序取得所需要空间的方法可以有两种方法:一是加载程序的时候程序分配,再就是再程序执行的过程中向系统申请。...

2018-07-22 17:38:18 103

转载 uC/OS-III-6.2-uC/OS-III内部任务管理(任务状态)

1.任务状态 从用户的观点来看,任务可以是有 5种状态,见图 5-6。展示了任务状态间的转换关系。 {休眠状态,就绪状态,运行状态,挂起状态,中断状态} (1).处于休眠状态的任务驻留于内存但未被uC/OS-III使能。通过调用OSTaskCreate()函数uC/OS-III创建任务。 任务代码是存在于ROM的。但需要用OSTaskCreate()函数通知uC/OS-III关于任务的相...

2018-07-21 20:07:31 733

转载 uC/OS-III-6.1-uC/OS-III任务堆栈空间

1.设置任务优先级 嵌入式系统中的重要的应用应该被设置为高优先级,一些显示操作就应该被设置为低优先级。 然而, 由于实时系统的复杂性, 在大多数情况下任务的优先级是不能被事先确定的。多数系统中,不是所有的任务都是重要的,不重要的任务应该被设置为低优先级。 2.堆栈空间大小的确定 堆栈的大小取决于该任务的需求。设定堆栈大小时,你就需要考虑: 所有可能被堆栈调用的函数及其函数的嵌套层数, 相关局...

2018-07-21 17:53:04 210

转载 汇编-5.0-[BX]和loop指令

1.要完整的描述一个内存单元,需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。 2.“()”表示一个寄存器或一个内存单元中的内容。如:(ax)表示ax中的内容。 “()”中的元素可以有3种类型:1.寄存器名;2.段寄存器名;3.内存单元的物理地址(一个20位的数据)。 3.约定符号idata表示常量 用idata表示常量。 3.[BX] mov ax,[bx] 功能:b...

2018-07-20 16:18:06 154

转载 uC/OS-III-6.0-uC/OS-III任务管理

1.实时应用中一般将工作拆分为多个任务,每个任务都需要是可靠的。任务(也叫做线程)是简单的程序。单CPU中,在任何时刻只能是一个任务被执行。 2.uC/OS-III支持多任务且对任务数量没有限制, 任务数仅取决于处理器内存的大小(RAM)。多任务调度是任务间占用CPU的过程。 3.任务用于监控输入、更新输出、计算、循环控制、显示、读按钮和键盘、 与其它系统交流等。 4.任务看起来像 C函数...

2018-07-19 19:03:54 208

转载 uC/OS-III-5.0-uC/OS-III临界段

1.临界段 (1).临界段代码,也称作临界域,是一段不可分割的代码。 uC/OS-III中包含了很多临界段代码。 如果临界段可能被中断, 那么就需要关中断以保护临界段。 如果临界段可能被任务级代码打断, 那么需要锁调度器保护临界段。 (2).uC/OS-III中的临界段的保护方法决定于 ISR中对消息的处理方式。 (3).如 果OS_CFG_ISR_POST_DEFERRED_EN被设为0(...

2018-07-19 10:11:11 164

转载 uC/OS-III-4.2-uC/OS-III多任务应用

1.app.c: ( 1) .分别为每个任务分配一个OS_TCB。 (2). 斥信号量( mutex)是一个内核对象(一个结构体),用于保护共享资源。任务要访问共享资源就必须先获得 mutex。 mutex的拥有者使用完这个资源后就必须释放这个mutex。 这个例子示范了这个过程。 (3). 消息队列是一个内核对象, ISR或任务可以直接发送消息到另一个任务。发送者制定一个消息并将其发送...

2018-07-18 17:49:35 352

转载 uC/OS-III-4.1-uC/OS-III单任务应用

1.单任务应用 app.c文件: (1).APP_CFG.H 是用于配置的头文件。例如, APP_CFG.H 中包含的#define常量确定了任务优先级,堆栈大小,以及其他特性。 BSP.H 是 BSP 的头文件,包含了 #define 及函数原型如BSP_Init(),,SP_LED_On(), OS_TS_GET()等。 OS.H是uC/OS-III的主要头文件,包含了以下头文件:...

2018-07-18 16:07:24 180

转载 uC/OS-III-4.0-uC/OS-III目录结构

本文章都是基于学习野火STMF4系列的开发板的学习做的,大部分都是开发手册的内容,做笔记用,具体请参考野火官方的开发手册。 1. uC/OS-III 文件结构 ①配置文件,通过定义这些文件里宏的值可以轻易地裁剪 uC/OS-III 的功能。 ②用户应用文件, 定义和声明应用任务。 ③内核服务文件,其代码与 CPU 无关,可以不做任何修改移植到任何 CPU。 ④底层函数库,比如字符串的...

2018-07-17 15:38:49 323

转载 uC/OS-III-3.1-uC/OS-III的特点:

1.C/OS-III是一个可扩展的, 可固化的, 抢占式的实时内核, 它管理的任务个数不受限制。 它是第三代内核, 提供了现代实时内核所期望的所有功能包括资源管理、同步、内部任务交流等。 uC/OS-III也提供了很多特性是在其他实时内核中所没有的。比如能在运行时测量运行性能, 直接得发送信号或消息给任务, 任务能同时等待多个信号量和消息队列。 2.特点 (1).源代码: uC/OS-III完...

2018-07-16 19:48:16 360

转载 汇编-4.1-汇编程序

1.汇编程序写出到执行过程 1.编写汇编程序 使用文本编辑器编辑源程序 2.编译链接 对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可执行文件。 可执行文件: (1).程序(从源程序中的汇编指令翻译过的机器码)和数据(源程序中定义的数据) (2).相关的数据(程序大小,内存占用空间) 3.执行可执行文件的程序 2.源程序 1.伪指令 汇编语...

2018-07-15 22:18:46 430

翻译 29-2-电容触摸屏控制芯片GT911

1.接口说明 GT9 非单层多点系列(以下简称 GT9 系列) 与主机接口共有 6 PIN,分别为: VDD、 GND、 SCL、SDA、 INT、 RESET。 主控的 INT 口线需具有上升沿或下降沿中断触发功能,并且当其在输入态时, 主控端必需设为悬浮态,取消内部上下拉功能; 主机通过输出高、低来控制 GT9 系列的 RESET 口为高或低。 为保证可靠复位,建议 RESET 脚输出低 ...

2018-07-12 15:43:01 13452

翻译 汇编-3.1-寄存器(内存访问)

1.内存中字的存储 CPU中,用16位寄存器来存放一个字。高8位存放高位字节,低8位存放低位字节。在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字节要用两个地址连续的内存单元来存放,这个字节的低位字节存放在地址单元的低地址单元中,高位字节存放在高地址单元中。 2.字单元 即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据...

2018-07-11 17:21:43 220

翻译 29-1-电容触摸屏

1.触摸屏简介 触摸屏又称触控面板,它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要分为电阻式触摸屏和电容式触摸屏。 电阻屏造价便宜,能适应较恶劣的环境,但它只支持单点触控(一次只能检测面板上的一个触摸位置),触摸时需要一定的压力,使用久了容易造成表面磨损,影响寿命; 而电容屏具有支持多点触控、检测精度高的特点,电容屏通过与导电物体产生的电容效应来检测触摸动作,只能感应...

2018-07-10 20:06:00 643

翻译 28-1-LTDC显示中英文

1.字符编码 由于计算机只能识别 0 和 1,文字也只能以 0 和 1 的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的 01 数字串表示特定的文字,最简单的字符编码例子是 ASCII 码。 2.中文编码 (1).GB2312 标准 当我们设定系统使用 GB2312 标准的时候,它遇到一个字符串时,会按字节检测字符值的大小,若遇到连续两个字节的数值...

2018-07-10 17:13:28 357

转载 第一章-计算机系统概论-1.1-计算机系统简介

1.计算机系统简介 计算机系统由”硬件“和”软件“两大部分组成。 (1).硬件,是指计算机的实体部分,它由看得见摸得着的各类电子元器件组成。 (2).软件,看不见摸不着,由事先编制的具有各类特殊功能的程序组成。通常把这些程序寄属于各类媒体(如RAM,ROM,磁带,磁盘,光盘,甚至纸带等),他们通常存放在计算机的主存或者辅存内。 (3).软件又分为系统软件和应用软件。 系统软件又称为系统程...

2018-07-10 11:17:35 418

转载 27-5-LTDC控制LCD显示屏

1.显示原理 (1).液晶显示是分2层显示的,配置层级结构体参数再将数据输出到混合器合成,显示再液晶上。 (2).LTDC初始化结构体 控制 LTDC 涉及到非常多的寄存器,利用 LTDC 初始化结构体可以减轻开发和维护的工作量, LTDC 初始化结构体见代码清单 24-1。 结构体成员具体功能参考野火零死角玩转STM32; (3).因为是分层显示,所以还要配置一个LTD...

2018-07-07 21:28:20 703

转载 27-4-DMA2D图形加速器

在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望能用 DMA 来操作,针对这个需求, STM32 专门定制了DMA2D 外设,它可用于快速绘制矩形、直线、分层数据混合、数据复制以及进行图像数据格式转换,可以把它理解为图形专用的 DMA。 DMA2...

2018-07-05 16:39:39 1137

转载 27-3-液晶控制器

STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。 STM32 的 LTDC 液晶控制器最高支持 800x600 分辨率的屏幕;可支持多种颜色格式,包括RGB888、 RGB565、ARGB8888 和 ARGB1555 等(其中的“A”是指透明像素);支持 2 层显示数据混合,利用这个特性,可高效...

2018-07-05 11:38:45 519

转载 27-2-液晶控制原理

1.液晶面板的控制信号 (1) RGB 信号线 RGB 信号线各有 8 根,分别用于表示液晶屏一个像素点的红、绿、蓝颜色分量。常见的颜色表示会在“RGB”后面附带各个颜色分量值的数据位数,如 RGB565 表示红绿蓝的数据线数分别为 5、 6、 5 根,一共为 16 个数据位,可表示 2^16 种颜色;而这个液晶屏的种颜色分量的数据线都有 8根,所以它支持 RGB888 格式,一共 24 ...

2018-07-04 19:53:26 1523

翻译 27-1-LTDC-DMA2D—液晶显示简介

1.显示器简介 (1).显示器属于计算机的 I/O 设备,即输入输出设备。它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具。 (2).液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。 如果给液晶施加电场,会改变它的分子排列, 从而改变光线的传播方向, 配合偏振光片,它就具有控制光线透过率的作用,再配合彩色...

2018-07-04 19:07:56 319

翻译 uC/OS-III-3.0-uC/OS-III简介

1.OS-III是一个第 3代的系统内核,支持现代的实时内核所期待的大部分功能。 例如资源管理, 同步, 任务间的通信等等。然而, uC/OS-III提供的特色功能在其它的实时内核中是找不到的, 比如说完备的运行时间测量性能, 直接地发送信号或者消息到任务,任务可以同时等待多个内核对象等。 2.在 uC/OS-II中很少使用的功能已经被删除或者被更新, 添加了更高效的功能和服务。 其中最有用的功...

2018-07-03 16:03:59 2986

翻译 uC/OS-III-2.6-控制块的理解

1.操作系统实质上就是一种管理软件。而所谓的管理,就是在了解管理对象的基本信息之后在需要时,按照某种规则对这些管理对象进行分配、调度等操作。对所有的被管理对象登记造册,建立一些管理用表并在这些表格中记录被管理对象的信息。在某种意义上说,操作系统就是由各种表格和对这些表格的操作组成的。 在操作系统中的每一个被管理的对象,不管这个对象是一个软件模块还是一个硬件装置,他都至少会有一个记录其基本信息的数...

2018-07-01 21:44:53 188

翻译 汇编-2.1-寄存器

1.一个CPU由运算器、控制器、寄存器等器件组成,这些器件由内部总线相连。相对于CPU内部总线来说是外部总线。内部总线实现CPU内部各个器件的联系,外部总线实现CPU和主板上其他器件的联系。 (1).运算器进行信息处理; (2).寄存器进行信息存储; (3).控制器控制各种器件进行工作; (4).内部总线链接各种器件,在它之间进行数据的传送。 2.通用寄存器 AX,BX,CX,DX这4...

2018-06-30 21:35:54 133

UCos2_source源码

嵌入式操作系统UCos2源码,适合初学者,有注释,有注解,可运行

2017-12-14

嵌入式考试

嵌入式考试的一般题型都有,全面,学科考试必备,全靠这份内部资料,嵌入式原理考90没问题

2017-12-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除