自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

转载 4.2.6.技术升级:用宏定义来完成位运算

4.2.6.1、直接用宏来置位、复位(最右边为第1位)。 #define SET_NTH_BIT(x, n)  (x | ((1U)#define CLEAR_NTH_BIT(x, n) (x & ~((1U)4.2.6.2、截取变量的部分连续位。例如:变量0x88, 也就是10001000b,若截取第2~4位,则值为:100b = 4 #define GETBITS(

2018-05-08 21:06:01 347

转载 4.2.4.位运算实战演练1

回顾:要置1用|,用清零用&,要取反用^,~和>用来构建特定二进制数。4.2.4.1、给定一个整型数a,设置a的bit3,保证其他位不变。a = a | (1或者 a |= (14.2.4.2、给定一个整形数a,设置a的bit3~bit7,保持其他位不变。a = a | (0b11111或者 a |= (0x1f4.2.4.3、给定一个整型数a,清除a的bit15,保证

2018-05-08 21:05:46 148

转载 4.2.5.位运算实战演练2

4.2.4.7、用C语言将一个寄存器的bit7~bit17中的值加17(其余位不受影响)。关键点:不知道原来的值是多少思路:第一步,先读出原来bit7~bit17的值 第二步,给这个值加17 第三步,将bit7~bit17清零 第四步,将第二步算出来的值写入bit7~bit174.2.4.8、用C语言给一个寄存器的bit7~bit17赋值937,同时给bit21~b

2018-05-08 21:05:33 143

转载 4.2.3.如何用位运算构建特定二进制数

4.2.3.1、寄存器位操作经常需要特定位给特定值(1)从上节可知,对寄存器特定位进行置1或者清0或者取反,关键性的难点在于要事先构建一个特别的数,这个数和原来的值进行位与、位或、位异或等操作,即可达到我们对寄存器操作的要求。(2)解法1:用工具软件或者计算器或者自己大脑计算,直接给出完整的32位特定数。优势:可以完成工作,难度也不大,操作起来也不是太麻烦。劣势:依赖工具,而且不直

2018-05-08 21:05:19 255

转载 4.2.2.位与位或位异或在操作寄存器时的特殊作用

4.2.2.1、寄存器操作的要求(特定位改变而不影响其他位)(1)ARM是内存与IO统一编址的,ARM中有很多内部外设,SoC中CPU通过向这些内部外设的寄存器写入一些特定的值来操控这个内部外设,进而操控硬件动作。所以可以说:读写寄存器就是操控硬件。(2)寄存器的特点是按位进行规划和使用。但是寄存器的读写却是整体32位一起进行的(也就是说你只想修改bit5~bit7是不行的,必须整体32b

2018-05-08 21:05:07 347

转载 4.2.1.位操作符

4.2.1.1、位与&(1)注意:位与符号是一个&,两个&&是逻辑与。(2)真值表:1&0=0 1&1=10&0=0 0&1=0(3)从真值表可以看出:位与操作的特点是,只有1和1位于结果为1,其余全是0.(4)位与和逻辑与的区别:位与时两个操作数是按照二进制位彼次对应位相与的,逻辑与是两个操作数作为整体来相与的。(举例:0xAA&0xF0=0xA0,0xAA && 0

2018-05-08 21:04:52 97

转载 1.7.11.uart stdio的移植3

朱老师笔记1.7.11.1、在移植后的uart stdio项目中添加link.lds链接脚本,指定连接地址到0xd00200101.7.11.2、gcc可变参数及va_arg介绍(1)printf函数中首先使用了C语言的可变参数va_start/va_arg/va_end;(2)建议大家先去baidu“C语言可变参数”,然后按照别人的教程、博客实际写几个简单的变参的使用示例

2018-04-30 21:04:30 158

转载 1.8.10.外部中断

1.8.10.1、什么是外部中断?数据手册在哪里?(1)SoC支持的中断类型中有一类叫外部中断。内部中断就是指的中断源来自于SoC内部(一般是内部外设),譬如串口、定时器等部件产生的中断;外部中断是SoC外部的设备,通过外部中断对应的GPIO引脚产生的中断。(2)按键在SoC中就使用外部中断来实现。具体实现方法是:将按键电路接在外部中断的GPIO上,然后将GPIO配置为外部中断模式。此时人

2018-04-30 21:04:08 495

转载 1.8.8.S5PV210中断处理的编程实践

朱老师笔记1.8.8.1、上节中代码中的小问题主要集中在start.S中,原因就是不常写,格式忽略。解决方案就是编译时发现再解决。1.8.8.2、中断控制器初始化主要工作有:第一阶段绑定异常向量表到异常处理程序;禁止所有中断源;选择所有中断类型为IRQ;清理VICnADDR寄存器为0.1.8.8.3、中断的使能与禁止思路是先根据中断号判断这个中断属于VIC几,然后在

2018-04-30 21:03:49 187

转载 1.8.7.S5PV210中断处理的主要寄存器

朱老师笔记1.8.7.1、VICnINTENABLE和VICnINTENCLEAR(1)VICnINTENABLE 对应interrupt enable,INTENCLEAR对应interrupt enable clear(2)INTENABLE寄存器负责相应的中断的使能,INTENCLEAR寄存器负责相应的中断的禁止。(3)当我们想使能(意思就是启用这个中断,意思就是当硬件产生中

2018-04-30 21:03:25 314

转载 1.8.6.S5PV210的向量中断控制器

朱老师笔记1.8.6.1、异常处理的2个阶段(1)可以将异常处理分为2个阶段来理解。第一个阶段是异常向量表跳转;第二个阶段就是进入了真正的异常处理程序irq_handler之后的部分。1.8.6.2、回顾:中断处理的第一阶段(异常向量表阶段)处理。(1)第一个阶段之所以能够进行,主要依赖于CPU设计时提供的异常向量表机制。第一个阶段的主要任务是从异常发生到响应异常并且保存/恢复现场

2018-04-30 21:03:03 200

转载 1.8.5.异常向量表的编程处理

朱老师笔记1.8.5.1、像内存一样去访问异常向量表(1)S5PV210的异常向量表可以改变(在CP15协处理器中),以适应操作系统的需求。但是目前系统刚启动时,此时DRAM尚未初始化,程序都在SRAM中运行。210在iRAM中设置了异常向量表,供暂时性使用。(2)查210的iROM application note文档中iRAM的地址分配,可知,iRAM中的异常向量表起始地址为0xD

2018-04-30 21:02:47 330

转载 1.8.4.S5PV210的中断体系介绍

朱老师笔记1.8.4.1、什么是中断(1)中断的发明是用来解决宏观上的并行需要的。宏观就是从整体上来看,并行就是多件事情都完成了。(2)微观上的并行,就是指的真正的并行,就是精确到每一秒甚至每一刻,多个事情都是在同时进行的。宏观上面的并行并不等于围观的并行,有时候宏观上是并行的,微观上是串行的。(3)例子中一个人在看电影,快递来了暂停电影跑去收快递,收完快递继续回来看电影,这个例子

2018-04-30 21:02:26 151

转载 1.8.3.串口输出和按键消抖

朱老师笔记1.8.3.1、基于串口标准输出的按键调试(1)以之前的串口stdio的工程为基础来移植添加轮询方式按键处理。(2)注意USB下载方式可能有错误(有可能不下载,也有可能下载了执行不对),解决方案是用SD卡启动来替代。1.8.3.2、什么是按键消抖(1)按键这种物理器件本身会有抖动信号,抖动信号指的是在电平由高到低(也就是按键按下时)或者电平由低到高(也就是按键弹起时)

2018-04-30 21:02:15 336

转载 1.8.2.轮询方式处理按键

朱老师笔记1.8.2.1、X210开发板的按键接法(1)查原理图,找到按键对应的GPIO:SW5:GPH0_2SW6:GPH0_3 SW78910:GPH2_0123(2)原理图上可以看出:按下时是低电平,弹起时是高电平1.8.2.2、按键对应的GPIO模式设置(1)按键接到GPIO上,按键按下还是弹起,决定外部电路的接通与否,从而决定这个GPIO引脚的电压是高还是低;这个

2018-04-30 21:01:23 961

转载 1.8.1.什么是按键

朱老师笔记1.8.1.1、按键的物理特性(1)、平时没人按的时候,弹簧把按键按钮弹开。此时内部断开的。(2)、有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开。(3)、一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的不按则断开,按下则闭合);一对是常闭触点(平时不按时是闭合

2018-04-30 21:01:08 233

转载 1.7.10.uart stdio的移植2

朱老师笔记1.7.10.1、修改Makefile进行printf移植1.7.10.2、Makefile及gcc的库文件介绍1.7.10.3、多文件夹裸机工程的结构解析1.7.10.4、编译运行及测试《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org首先还是start.S,然后进入到main.c,

2018-04-29 16:59:59 107

转载 1.7.9.uart stdio的移植1

朱老师笔记1.7.9.1、什么是stdio(1)#include (2)stdio:standard input output,标准输入输出(3)标准输入输出就是操作系统定义的默认的输入和输出通道。一般在PC机的情况下,标准输入指的是键盘,标准输出指的是屏幕。(4)printf函数和scanf函数可以和底层输入/输出函数绑定,然后这两个函数就可以和stdio绑定起来。也就是说我

2018-04-29 16:59:40 215

转载 1.7.8.S5PV210串行通信编程实战2

1.7.8.1、串口Tx、Rx对应的GPIO的初始化给GPA0CON的相应bit位赋值为相应值,用C语言位操作来完成。1.7.8.2、UCON、ULCON、UMCON、UFCON等主要控制寄存器依据上节中分析的值进行依次设置即可。1.7.8.3、波特率的计算和设置(1)第一步,用PCLK_PSYS和目标波特率去计算DIV_VAL: DIV_VAL = (PCLK / (bps

2018-04-29 16:59:18 148

转载 1.7.7.S5PV210串行通信编程实战1

1.7.7.1、整个程序流程分析(1)整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节1.7.7.2、串口控制器初始化关键步骤(1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)(2)GPA0CON(0xE0200000),bit[3:0] = 0b0010 bit[7:4]

2018-04-29 16:58:58 151

转载 1.7.1,2,3.通信涉及的几个基础概念,串口通信的基本概念,串口通信的基本原理

通信涉及两个很重要的方面,1.对发送方而言是信息的表示方法,对接收方而言就是解析方法,2.信息的发送方法,即如何在传输介质上进行有效的传输,同步和异步,是否有统一的时钟,同步需要一个专门的信号线表示时钟,适合通信频繁的双方。电平信号和差分信号,电平信号中,有一个参考电平(一般是GND),而差分信号中,没

2018-04-29 16:58:41 172

转载 1.7.6.S5PV210串行通信接口详解3

1.7.6.1、串行通信与中断的关系(1)串口通信分为发送/接收2部分。发送方一般不需要(也可以使用)中断即可完成发送,接收方必须(一般来说必须,也可以轮询方式接收)使用中断来接收。(2)发送方可以选择使用中断,也可以选择不使用中断。使用中断的工作情景是:发送方先设置好中断并绑定一个中断处理程序,然后发送方丢一帧数据给transmitter,transmitter发送耗费一段时间来发送这一

2018-04-29 16:58:22 116

转载 1.7.5.S5PV210串行通信接口详解2

1.7.5.0、本来串口的功能就是上节讲过的部分,但是后来的技术发展给串口叠加了一些高级功能,在像210这类的高级SoC的串口控制器中,都有这类高级功能。1.7.5.1、FIFO模式及其作用(1)典型的串口设计,发送/接收缓冲区只有1字节,每次发送/接收只能处理1帧数据。这样在单片机中没什么问题,但是到复杂SoC中(一般有操作系统的)就会有问题,会导致效率低下,因为CPU需要不断切换上下文

2018-04-29 16:58:04 159

转载 1.7.4.S5PV210串行通信接口详解1

4.16

2018-04-29 16:57:28 192

转载 C语言进阶篇1

1、数据类型1.1、基本数据类型数据类型分2类:基本数据类型+复合类型基本类型:char short int long float double复合类型:数组 结构体 共用体 类(C语言没有类,C++有)1.1.1、内存占用与sizeof运算符数据类型就好像一个一个的模子,这个模子实例化出C语言的变量。变量存储在内存中,需要占用一定的内存空间。一个变量占用多少空间是

2018-04-16 16:49:57 163

转载 C语言进阶篇2

运算符逻辑运算符: && ||!位运算符:& |~ ^三目运算符: ? :结构体元素访问: . ->命令行参数argc与argvC语言中判断式各种数据类型和0比较整形和0比较浮点型和0比较bool类型与0比较指针类型和0比较(NULL)NULL和'\0'的区别大端模式和小端模式字符和字符串

2018-04-16 16:49:12 69

转载 C语言基础10

9、结构体、共用体、枚举、宏定义、预处理9.1、结构体9.1.1、为什么需要结构体?没有结构体之前,在C语言中,数据的组织依靠:变量+数组。最初最简单的时候,只需要使用基本数据类型(int char float double)来定义单个变量,需要几个变量就定义几个。后来情况变复杂了,有时需要很多意义相关的变量(譬如需要存储及运算一个班级的学生分数)这时候数组出现了。数组解决了需

2018-04-13 16:23:55 88

转载 C语言基础9

8、指针指针全称是指针变量,其实质是C语言的一种变量。这种变量比较特殊,通常它的值会被赋值为某个变量的地址值(p = &a),然后我们可以使用*p这样的方式去间接访问p所指向的那个变量。8.1、为什么需要指针?指针存在的目的就是间接访问。有了指针之后,我们访问变量a不必只通过a这个变量名来访问。而可以通过p = &a; *p = xxx;这样的方式来间接访问变量a。

2018-04-13 16:23:36 209

转载 C语言基础8

7、数组到目前为止,我们已经学习了C语言的基本数据类型:整形、浮点型、字符型。再往后就是复合数据类型。所谓复合数据类型,是指由简单数据类型,经过一定的数据结构封装,组成而成的新的数据类型。譬如数组、譬如结构体、譬如公用体7.1、为什么需要数组?数组就是数组成一个组,数就是一个特定数据类型的变量,组就是说好多数放在了一起。7.2、怎么定义数组?int

2018-04-13 16:23:17 119

转载 C语言基础7

6、函数截至目前为止,已经学习的数据类型,运算符,三种程序结构,已经可以完成一些C语言程序了。但是不足之处在于写简单程序可以,写不了复杂程序。当程序简单的时候,一个人可以用一个main函数搞定功能。当程序变成的时候,超出了人的大脑承受范围,这时候逻辑不清了。这时候就需要把一个大程序分成许多小的模块来组织,于是乎出现了概念叫做函数。函数是C语言代码的基本组成部分,它是一个小的模块

2018-04-13 16:23:01 297

转载 C语言基础6

5、程序结构在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构顺序结构:按照实物本身特性,必须一个接着一个来完成。选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。循环结构:循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。5.1、选择结构详解:C语言中

2018-04-13 16:22:45 77

转载 C语言基础5

5、程序结构在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构顺序结构:按照实物本身特性,必须一个接着一个来完成。选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。循环结构:循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。总结:对于顺序结构来说,不需判断,因为下一

2018-04-13 16:22:18 90

转载 C语言基础4

4、C语言常用运算符4.1、数学运算符号4.1.1、常见数学运算符号,跟数学中理解相同+ 加号- 减号* 乘号/ 除号,相除以后的商% 取余符号,相除以后余数是几() 括号括起来优先级最高,先计算4.1.2、跟数学中意义不同的运算符= 赋值运算符,与数学中的等号完全不同。赋值运算符作用是经过运算后符号左边的部分(左值,一般是一个变量),的值就等于

2018-04-13 16:21:27 67

转载 C语言基础3

3、C语言数据类型3.1、整形C语言中的整形对应数学中的整数,整形变量是用来描述一个整数值的,整形变量经过计算后也只能是整数(整型),不可能出现小数(浮点型).要求:要学会整形变量的定义,赋值,计算 要学会使用printf函数打印出一些整形变量的值,作为输出和调试。C语言中整形有三种:(1)int 整形(2)short int,又叫做short,短整形((3)l

2018-04-13 16:21:11 95

转载 C语言基础2

练习题目:1、打印下面图形*  *** *****  ***   *2、打印下面的图形------------------------------------------** www.link-embed.com ** ** Aston **------------------------------------------总

2018-04-13 16:20:41 155

转载 C语言基础1

1、经典入门:hello world1.1、概念:*源文件:源文件即源代码文件,C语言源文件后缀名是.c。*头文件:头文件后缀名为.h(head,头),C语言代码由源文件和头文件组成。*关键字:关键字是C语言征用了的一些字,这些字在C语言中代表特殊含义,已经被C语言定义好了,轮不到我们用了。每个关键字都有自己特定的含义,我们必须搞懂每个关键字的所有含义和用法,否则就看不懂C语言程序

2018-04-13 16:19:39 431

转载 1.5.5.重定位引入和链接脚本1

《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org重定位引入和链接脚本位置无关编码位置有关编码我们在设计程序的时候会给程序指定一个运行地址,比如0xD0020010这里是通过链接器中指定来设置的,它的另一个说法也叫链接地址,链接地址可以通过上面的-Ttext或者链

2018-03-26 15:03:48 108

转载 1.4.3.自己动手安装交叉编译工具链1

1.4.3.1、Windows中装软件的特点Windows中装软件使用安装包,安装包解压后有2种情况:一种是一个安装文件(.exe .msi),双击进行安装,下一步直到安装完毕。安装完毕后会在桌面上生成快捷方式,我们平时使用快捷方式来启动这些程序;另一种是所谓的绿色软件、免安装软件。这种不用安装,直接解压开里面就有exe可以直接双击执行。1.4.3.2、linux中装软件的特点linu

2018-03-25 00:12:36 165

转载 1.4.2.裸机实验体验之SD卡下载

1.4.2.1、背景知识一般情况下,用USB下载来调试裸机程序比较方便;但是有时候电脑使用dnw会频繁蓝屏,这时候用SD卡下载调试是不错选择。把OM5打开GND,以从SD通道启动。从SD启动时会先从iNand(SD0)启动执行,当iNand启动做校验和时失败才会转为启动SD2。而我们做裸机实验时是通过SD2来提供裸机程序镜像的,因此需要先破坏内部iNand的uboot才可以强迫开发板从

2018-03-24 17:17:54 106

转载 1.5.1.汇编写启动代码之关看门狗

《朱老师物联网大讲堂》学习笔记学习网址:www.zhulaoshi.orgwatch dog timer 这就是看门狗现实中因为一些外部原因,比如恶劣的环境等,电子设备可能会跑飞或者死机在这种极端情况下,我们希望设备能够自动复位,进而重新启动,否则岂不是要一直卡在那里看门狗的作用就是用来帮我们实现自动复位的

2018-03-24 17:17:35 554

空空如也

空空如也

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

TA关注的人

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