- 博客(12)
- 资源 (12)
- 收藏
- 关注
原创 485通信要点
1. 双绞线485物理线缆跟CAN一样,使用双绞线,目的是抑制共模干扰2. 485芯片485可以理解为一个uart+方向控制,485属于半双工,同时只能发送或者接收,因此需要一根引脚控制数据方向,这跟引脚连接到485芯片,由芯片内部电路实现具体控制。3. 485收发切换注意,由于485芯片各个厂家的差异,响应速度也会不同,在通信时要根据物理层硬件特性和链路层协议不一样而合理地,实现收法切换延时。比如刚发送完不能理解切换到接收状态,要延时基本...
2021-10-30 10:25:17 4097
原创 嵌入式之状态机编程
干货 | 嵌入式之状态机编程干货~https://mp.weixin.qq.com/s/MhkwbO-CNaC7aGFLkgTq0A这篇文章描述了基本的状态机编程概念,感觉还可以。如果在搭上事件驱动框架,就可以写一个简单的RTOS了,这个OS可以作为一种不可剥夺型内核。...
2021-10-08 13:26:36 619
原创 联合体的妙用
1. 联合体的定义 联合体在C中比较常用,它不像结构体一样,每个成员占用各自的存储空间,相互不影响,它的所有成员占用同一段内存空间,修改一个成员影响其它所有成员。联合体的定义和使用与结构体一样。2. 联合体的应用(1)判断大小端union IsLittle_Endian{ int a; char c;};union IsLittle_Endian un;un.a =1;if(un.c == 1){ //小端}else{ //...
2021-10-08 12:15:08 1120
原创 C语言中位域
1. C语言中位域也叫位段,经常在STM32或DSP固件库中应用。ANSI C标准中规定,有下面三种数据类型可以用于位域,signed int 和 unsigned int 和_Bool。struct { unsigned int a:1; unsigned int b:2; unsigned int c:1;}abc;2. 上面声明建立了2个1位的字段,1个2位的字段。abc.a或c可以赋值为0或1,而abc.b可以赋值为0~3,因为它占两位。:冒号后面的数字用来限定成员.
2021-10-08 10:57:28 2318 1
原创 程序是怎么运行的
一个程序被编译后,生成汇编代码,被汇编器汇编后,生成机器代码,经过连接器链接成可执行程序后被烧录到flash中,链接地址可以理解为程序执行地址,PC指针一条一条地取指执行。 对于ARM处理器有两种指令,一种是32位的ARM指令集和16位的Thumb指令集,他们区别就是对一条可执行指令被编译成目标二进制后用16位表示还是32位表示。 CPU是从Flash取指执行程序的,数据会暂时存储在内存中,下面参考韦东山老师的两张图,能形象地说明:...
2021-10-07 18:02:41 492
原创 ARM-LINUX平台下的文本文件打印机打印
一、前言在前段时间构建打印系统的过程中,积累了一些打印相关知识,为实现上述目标也制定了计划,本文档就是计划任务具体实现的技术文档。分为如下几个部分:1. ARM-LINUX平台下实现文本文件打印方案。2. 上层服务软件的移植。3. 打印接口制作。 在计划最后,还准备实验佳能公司打印机,会编写单独的实验报告,本文档不会详细介绍。二、ARM-LINUX平台下实现文本文件打印方案根据前期工作,已明确使用Ghostscript...
2021-10-07 17:32:37 2900
原创 基于ARM处理器的U-BOOT详细移植总结
一个嵌入式产品的开发阶段,需要不断地把bootloader下载到存储器中,如果存储器使用nand flash,但是第一次里面什么都没有,所以只能根据处理器的启动方式从其他方式启动如sd卡或nor存储器启动,然后在SD卡或nor存储器启动的基础之上使用USB或网络接口把u-boot.bin先下载到内存中,然后再把内存中的内容写到nand中,但是写前4页时只能写每页的前2KB数据(对于OK6410开发板来说,处理器使用S3C6410处理器,nand使用每页4KB的存储器,当从nand启动时,处理...
2021-10-07 17:08:44 3664
原创 ARM处理器体系结构总结
CPU——核心,也可理解为MPU,而MCU微控制器表示包括CPU、片上外设(如存储器控制器)在内。处理器——可能包括多个CPU处理器系统——可能包括多个处理器一、处理器体系结构1. CISC –复杂指令集计算机 在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序中只占20%。代表有X86系列处理器。2.RISC—精简指令集计算机 RISC结构优先选取使用频最高的...
2021-10-07 16:35:23 2424
原创 安装桌面Linux系统总结
一、计算机的硬盘接口1 . IDE接口IDE接口的装置(硬盘或光盘设备)比较老,可以连接到IDE接口的装置都可称为IDE装置,不管是硬盘设备还是光盘设备。一般计算机都会提供两根IDE扁平电缆,每根电缆可以连接2个IDE装置,所以一台计算机最多可以连接四个IDE装置,如果已经有一个光盘设备,那么计算机就只能连接3个IDE硬盘。计算机上的两根IDE扁平电缆对应的接口被称为 IDE1(primary)及 IDE2(secondary),而每条扁平电缆...
2021-10-07 16:23:22 626
原创 基于Linux和4412处理器实现SPI接口的RF控制
本文介绍了基于4412(4核,cotex-A9)和Linux,基于SPI接口控制RF无线模块,代码和分析总结如下,便于以后查阅,只要是ARM-LINUX平台都可以参考:#include "spiRf2401.h"int spiOpen(void){ int spifd=0; spifd = open("/dev/spidev0.0", O_RDWR); if ( spifd < 0 ) { return -1; } else { return ...
2021-10-07 15:54:59 562
原创 Linux中List.h文件的分析和应用
本文介绍Linux中List.h文件,此文件中用双向链表实现了多种数据结构,比如队列,堆栈等,短小精湛,值得借鉴。此文件中还有哈希表的应用。
2021-10-07 12:04:39 2264
原创 线性表的链式存储结构(静态链表)
1. 静态链表的定义 首先要定义一个链表结点类型,为一个结构体,typedef struct spy { char *name; struct spy *next;}spy, *p_spy; 然后定义每一个结点,spy A = {"A", NULL};spy B = {"B", NULL};spy C = {"C", NULL};最后建立结点之间的链接,访问一个链表只需要一个头指针。 p_spy head = NULL; A.next = &B...
2021-10-07 11:20:59 342
Linux源码List.h文件详细分析(链表、队列、堆栈、哈希表等)
2017-11-15
u-boot顶层makefile、mkconfig、config.mk文件分析
2014-06-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人