摘要:
Static的用途: (1)修饰局部变量时,存储空间由堆栈变为静态存储区,生命周期在调用函数开始的整个程序运行周期。 (2)修饰全部变量时,存储空间不变,作用域限定在本文件内。 (3)修饰函数时,函数的作用域被限定在本文件内。不能被其他文件函数调用。引用与指针的区别: (1)引用必须初始化,指针可以不初始化。 (2)引用初始化后不能被改变,指针初始化后可以改变指向的对象。 (3)不存在指向空值的引用,但是存在指向空值的指针。实时系统的基本特性: 在特定的时间内完成特定的任务。什么是平衡二叉树? 左右子树都是平衡二叉树,而且左右子树的深度差绝对值不大于1;堆栈溢出一般都是没有回收垃圾资源所导致的 阅读全文
摘要:
在嵌入式学习中,网络协议和进程非常重要。首先说一下ISO-7层模型和TCP/IP 5层模型:ISO-7层有:物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。TCP/IP 有:物理层,数据链路层,网络层,传输层,应用层。 FTP,HTTP是在应用层;TCP/UDP工作在网络层; 交换机工作在数据链路层;路由器工作在网络层;集线器(hub)工作在物理层;socket接口是TCP/IP网络的API,socket是一种文件描述符,有类似打开文件的socket(); (1)socket的建立:返回的socket描述符,是一个指向内部数据结构的指 阅读全文
摘要:
这篇主要记录一下排序方法,并侧重介绍排序的思路,具体程序笔试前练习一下。 常见的排序方法有:冒泡排序,选择排序,插入排序,归并排序和快速排序。冒泡排序思路:依次比较相邻的两个数,将小数放前,大数放后。第一趟就会将最大数放到最后,第二趟会将第二大数放在倒数第二的位置,依此类推,实现有序化。选择排序思路:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数列的最后,直到全部待排序的数据元素排完,选择排序是不稳定的排序方法。插入排序思路:将无序数列通过二分法插入到有序数列中,从有序数列最后一个开始比较,直到比较到大于等于前面一个元素,小于后面一个元素的位置并插入,使N有序数列. 阅读全文
摘要:
void* p = malloc(100); sizeof(p) = 4;指针的字节数,并非指向内容的大小。void Func(char str[100]) sizeof(str) = 4;数组作为函数的参数进行传递时,该数组自动退化成同类型的指针。void GetMemory(char* p, int num) {p = (char*)malloc(sizeof(char)*num);} void Test(void) {char* str = NULL; GetMemory(str,100); strcpy(str,"hello");} 错误出现在GetMemory函数 阅读全文
摘要:
今天张老师给我们上了最后一堂课,关于面试技巧的,为了在接下来的校园招聘会有个好的表现,我再次来到博客园。这篇是第一篇,我简单回忆一下上课的笔记,有如下几个要点:认真对待每一次笔试和面试的机会,对应聘的公司要有所了解,给人以严谨的感觉。面试的时候要自信,稳重,勇于挑战。要以事实为依据,每个观点最好配合自己在学校的所作所为一起说,切记不要假空大。要有侧重点,知道自己的优缺点(举例说明最好,但是缺点对你要找的工作无关痛痒),自己最成功和最失败的事(同优缺点)。为人处事的方式,同事相处的原则(举例说明最好),家庭关系必须和睦呀。人生目标,3-5年的计划和目标,喜欢的工作。学习的态度,平时是否有自主学. 阅读全文
摘要:
2011年的全国大学生电子设计竞赛结束了,我如愿以偿的参加了这次比赛,但是让我非常伤心的是成绩是省三。这个结果是无论如何我都想不到的,无论是比赛前还是比赛后。比赛进行到第三天的时候,我们就已经有点把握了,测评后,结果也是让我们满意的,和相同题目的其他组比起来,我心里明白,算不上第一,但是前三是稳稳的,而且题目要求的所有指标中,包括发挥和基础,只有一个发挥部分的指标没有达到,结果落下一个省三的名次,这个还好说,问题就是,我认为不如我们做的好的那组,竟然能够进复赛,这让我太吃惊了...就因为你们和老师关系好么?就因为你们和领导熟么?就因为你们后台大么?我想说的是,这比赛太不公平了,以前学长就一.. 阅读全文
摘要:
写状态机程序的时候,经常会在case里面写一大串的程序操作,而学C语言的老师经常说哦,要把大块大块的代码封装成一个个函数,这样调用起来,或者移植起来就方便很多啦~~因为以前一直没有领会其中的方便,所以都没有用,今天没办法,状态实在太多了,而且每个状态的操作实在是麻烦,所以上网学了一个方法,C语言中的函数指针数组,可是帮了我的大忙了。首先需要定义一个函数指针数组:void (*state[max])();如果知道需要调用的函数名的话,void a();void b();void c();也可以在定义的时候直接给改函数指针赋值:void (*state[max])() = {a,b,c};接下来. 阅读全文
摘要:
又看了菲利普公司的支持15693协议的卡,这回是挑选了I-CODE 2 Smart Label IC,看了英文原版的datasheet,感触就是没有 支持14443A协议的s70卡片来的强大,只有个UID,再加一个数据块,类似s70卡的密钥功能都没有的。这也是一张13.56M频段的卡片,有28个Block,每个Block有4个字节,卡片的UID都是8个字节的,64位。一下是UID的结构:其中的特点捏,有个AFI,应用标识簇,读写单个块,多个块,锁定块,等等,都是对块进行操作,所以没多大的意思啦。我感觉哦,做这些东西的话,关键要看想法了,故叫做RF Idea,呵呵,还有想到mifare卡片的密. 阅读全文
摘要:
最近看了看1444A协议的标准卡,看了一款菲利普的mifare卡,特此记录下,方便大家理解。最后我得出的结论是,这些标签卡,都木有什么值得研究的… 先说说它的存储结构吧,s70的卡片有4K的EEPROM,分为前32个扇区,每个扇区4个块,后8个扇区,每个扇区16个块,而且每个块都是16个字节的。每个扇区的最后一个块是地有A密钥和B密钥,还有一个Access Bits,关键的是这个AccessBits里面的东西,决定了EEPROM的读写这里特变要注意了,前32个扇区都是一一对应的,但是后面的8个扇区,每5个对应一个C1C2C3,数据区就是这样对应的说。还有就是修改和验证的问题了。先看这张图这个. 阅读全文
摘要:
今天搞得N晚,为的就是实现AVR的USART通信,以前自己做过,但是印象不深刻,现在从新再来过的时候,发现原来自己还有很多的不细心,就比如说,现在遇到的一个问题,AVR的JTAG和USART的不兼容,害得我不得不拔掉仿真器才能看见USART的效果,这样就不能单步调试了,难怪我用JTAG查看AVR的寄存器的时候,有那么多的错误,本来自己配置的寄存器是0x32的,没想到JTAG读出来的数据却是0x00~~~真的不耐了~~AVR果断不像STM32那样好用~~~ 还有就是一个很变态的问题,在这里也mark一下!!!就是USART进入接收中断的时候,下面这两个绝对是害我搞得这么晚的元凶!!! if((. 阅读全文