随手笔记
狗炜别叫我打游戏
这个作者很懒,什么都没留下…
展开
-
分析u-boot Makefile "if" 语句
这是u-boot1.1.6 第92行出现的语句OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))这是MAkefile中if语句:$(if CONDITION,THEN-PART[,ELSE-PART])函数功能:一个参数“CONDITION” ,在函数执行时忽略其前导和结尾空字符,如果包含对其他变量或者函数的引用则进行展开。...原创 2019-09-05 08:57:13 · 355 阅读 · 0 评论 -
C语言printf()、sprintf()、vsprintf() 的区别与联系
C语言printf()、sprintf()、vsprintf()的区别与联系printf() 在控制台应用程序中最为常用,使用也很简单。其参数为格式化字符串。函数原型:printf(const char *format,[argument]);例如:int a=1,b=2;printf("a=%d,b=%d",a,b);输出:a=1,b=2sprintf() 用于将输出存到字...原创 2019-08-15 20:20:05 · 197 阅读 · 0 评论 -
如何看懂原理图
原理图分类1、GPIO(general peripheral input output)和门电路1.1 输入、输出引脚、上拉电阻、三极管1.2 与门、或门、非门上拉电阻结合三极管此时2440输出0,三极管不导通,输出1,三极管导通。此时如果在上拉电阻下面接个LED灯,另外一端接3.3v,当输出1时LED亮上拉电阻结合输入引脚如果按键不接上拉电阻,...原创 2019-08-15 20:14:26 · 12343 阅读 · 1 评论 -
ARM异常与中断处理
中断是ARM处理器提高工作效率的方法之一。Ⅰ、形象理解中断:假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。母亲怎么才能知道小孩醒?过一会打开一次房门,看婴儿是否睡醒,让后接着看书 一直等到婴儿发出声音以后再过去查看,期间都在读书 查询 while(1){ 1 read book(读书) 2 open door(开门) i...原创 2019-08-14 22:13:17 · 619 阅读 · 0 评论 -
走进仓库(内存)
前面写完代码后,直接送到车间就可以运行。ARM是流水线工作,内存只是存放代码的场所,那么CPU是如何跟内存打交道的呢?(计算机组成原理知识)组成原理很理论的描述了它们之间的关系。但是并没有针对ARM做分析。其实只需要搞懂下面几个问题:① 内存如何存放程序(摆放)② CPU如何访问内存(读写)Ⅰ、CPU与外设的藕断丝连芯片结构图:CPU不会直接与外设打交道,它只管发指令,...原创 2019-08-14 21:45:22 · 242 阅读 · 0 评论 -
人机交互(串口通信)
可以说除了LCD屏,串口应该是最好的交互工具了。先过一遍串口的基本通信原理。Ⅰ、协议:通信无非就是双方交换消息,双方要有共同的语言,这样你说什么我才能知道。另外还要有时序同步,你说的太快,我也听不清楚。Ⅱ、时序图平时串口发送线是高电平的,当要向串口发送消息时,拉低串口发送线(起始位),此时PC端发现RX接收线由高电平变为低电平,那么PC端就知道串口即将有数据发送。那么P...原创 2019-08-14 21:33:08 · 1664 阅读 · 0 评论 -
动动手指(按键)
LED灯我们接触了管脚输出功能,有出就有入,这一章将利用管脚的输入功能来获取按键的输入值。进而控制LED灯的亮灭。依然是三步骤:看原理图 ----- 确定引脚连线 看芯片手册 ----- 确定引脚功能 写程序 ----- 完成功能开发1、按键输入按键采用轮询方式,也就是在死循环不断检测引脚电平。再LED C语言版本上开发。Ⅰ、看门狗这里先介绍一下看门狗,...原创 2019-08-14 21:12:22 · 276 阅读 · 0 评论 -
星星点灯(点亮LED灯)
2、再次点灯显然用汇编写代码比较困难,如何用C语言来点灯呢?先准备个栈,如何告知ARM栈从哪里开始呢?sp寄存器:这个存储器指定了栈的开始地址,这样就好办了!!!不过栈从哪里开始呢?还记得处理器有个内部SRAM,它的大小有4k,也就是4096byte。那我们就设置栈从4096开始往下增长吧。如果ldr sp,=4096,那就代表是从nand启动ldr sp,=0x4000...原创 2019-08-14 21:06:35 · 239 阅读 · 0 评论 -
嵌入式Linux开发基础知识
1、程序设计重要概念一个程序本质上都是由 bss段、data段、text段三个段组成。这三个小鬼,在裸机开发中非常重要。因为它们涉及到程序运行时内存大小的分配。原创 2019-08-14 20:57:25 · 605 阅读 · 0 评论 -
利用systick实现1s定时
滴答定时器简介:系统定时器SysTick是属于CM3内核中的一个外设,相关寄存器内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,这使得软件(OS)在CM3单片机可以十分容易的移植。SysTick一般用于操作系统的产生时基功能,以维持操作系统的“心跳”。问题描述:利用stm32自带的滴答定时器,也就是systick定时器,实现1s钟定时,滴答定时器10ms中断一次...原创 2019-08-14 09:06:36 · 2955 阅读 · 1 评论 -
485学习
一、简介半双工,多点通信的标准。它的电气特性和 RS-232 大不一样。用缆线两端的电压差值来表示传递信号。RS485 仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。传输距离远, 支持节点多。 RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支...原创 2019-08-13 16:23:57 · 798 阅读 · 0 评论 -
字符串转16进制
问题描述:通过串口接收到一串字符串"cacabcbc",要求按照16进制输出时也是"cacabcbc"。问题分析:这个问题乍一看,还不知道如何下手。其实很简单,就是对字符的ASCII码进行转换。例如:仔细分析可以得到一个字符与它本身相同的16进制数相差87,再仔细点看,可以发现其实就是差了一个‘a’再加上10。 ...原创 2019-08-13 16:15:05 · 13201 阅读 · 1 评论 -
算法 3:最常用的排序——快速排序
1、源码入口解释 算法 3:最常用的排序——快速排序假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个 10 个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数 6 作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在 6 的右边,比基准数小的数放在 6 的...转载 2019-09-10 09:11:23 · 319 阅读 · 0 评论