内嵌式的语言PHP应用技巧七则 1、判断某个函数是否被支持由于在PHP中我们可以灵活的使用增加或者减少php支持的模块,所以有的时候我们在使用PHP之前,总是会首先确定某个模块是否被加载,比如,看看GD图形模块是否被支持,可以用下面的这段代码:if(!function_exists("imagecreate")) ?>同样的道理,我们可以利用... 2023-06-13 PHPHTMLstatic超级链接文章软件开发程序设计
C语言的interwork实例 /*************************************************************************thumbmain.c**该程序是Thumb程序,子程序arm_function(void)为ARM程序***********************************************************************... 2023-06-13 C语言interworkthumb指令集ARM指令集文章软件开发程序设计
嵌入式开发中typedef用法 typedef用法typedef声明,简称typedef,为现有类型创建一个新的名字。比如人们常常使用typedef来编写更美观和可读的代码。所谓美观,意指typedef能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。typedef使用最多的地方是创建易于记忆的类型... 2023-06-13 typedef声明数据类型define文章软件开发程序设计
c语言复习小记 c语言的指针确实很灵活,尤其和数组结合起来用的时候,非常方便。二维数组和指针结合起来用的时候要复杂一些,注意一下形式的定义:int (*p)[4]; //定义一个指向包含4个整数元素的指针int *p[4];//定义一个指针数组,该指针数组包含4个指向整形变量的指针定义以下一个二维数组int ... 2023-06-13 C语言函数指针排序算法循环文章软件开发程序设计
汇编程序设计之伪指令 1、 设置起始地址ORG格式: ORG nn ;nn是16位二进制数;nn给出了存放的超始地址值给程序起始地址或数据块的起始地址赋值。它总是出现在每段源程序或数据块的开始。在一个源程序中可以多次使用ORG命令,以规定不同程序段或数据块的起始位置,所规定的地址从小到大,不允许重叠。例... 2023-06-13 汇编程序伪指令ORGEQU文章软件开发程序设计
优化C代码常用的几招 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。比如说字符串的赋值:方法A:通常的办法#defineLEN32charstring1[LEN];memset(string1,0,LEN);strcpy(s... 2023-06-13 优化C代码程序效率汇编嵌入寄存器变量文章软件开发程序设计
想成为嵌入式程序员应知道基本问题 一、预处理器(Preprocessor):1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60*24*365)UL在这里可以看到:1)#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出... 2023-06-13 嵌入式程序员Preprocessor死循环数据声明volatile文章软件开发程序设计
C中如何直接嵌入汇编的方法 //#ifdef ASMunsigned long shiftR1(register unsigned long);#elseextern unsigned long shiftR1(register unsigned long);#endif//end of asm.h//#define ASM#include #include #pr... 2023-06-13 C嵌入汇编源文件文章软件开发程序设计
不同类型指针变量的具体含义 什么是指针变量?指针变量,本质上是一个变量,只是它是存放地址的变量,指针的类型代表的是它所指向的变量的类型。因此就有了指向整型、字符型、浮点型等其它类型的指针,但实际上所有类型的指针变量存放的都是int型(对于16位编译系统,比如TC,int是2字节,对于32位编译系统,比如VC,GCC... 2023-06-13 指针类型数据类型指针变量int型文章软件开发程序设计
C语言中函数回调 什么是回调函数?简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数?因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需... 2023-06-13 C语言函数回调函数指针文章软件开发程序设计
函数指针和函数指针数组的使用 笔者遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度。数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性。我的任务是必须对每一种可能出现的数据类... 2023-06-13 函数指针函数指针数组caseC语言文章软件开发程序设计
在编写Verilog的时候一点看法 在编写Verilog的时候一点看法:每个人的代码风格都可能不一样,但是好的代码风格会给自己和同事带去很大的方便,也许大家刚开始没有注意到这点。再过了很长的时候后你回过头来看你的代码架构不会那么乱,一看你的模块就知道你的是什么功能和实现的方法,很容易就切入到到工程里了,... 2023-06-13 verilog编程规范程序设计FPGA文章软件开发
得到一个field在结构体中的偏移量 宏定义:得到一个field在结构体(struct type)中的偏移量#defineOFFSETOF(type,field)((u32)&(((type*)0)->field))(type*)0:把0地址当成type类型的指针。((type*)0)->field:对应域的变量。&((type*)0)->field:取该变量的地址,其实就等于该域相对于0地址的偏移量。(u32)&(((ty... 2023-06-13 结构体null指针偏移量地址文章软件开发程序设计
10种软件滤波法 1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:如果本次值与上次值之差A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰。C、缺点:无法抑制那种周期性的干扰,平滑度... 2023-06-13 软件滤波限幅滤波防脉冲干扰一阶滞后文章软件开发程序设计
结构体指针变量使用时的注意事项 在使用结构体指针变量的时候,往往容易犯一个“低级”错误。即定义一个结构体指针变量后就直接对结构体指针变量所指向的结构体成员进行操作,从而产生一些莫名其妙的错误。我们必须要给结构体指针变量赋予一个有效的结构体变量地址,才能正常操作结构体指针变量。比... 2023-06-13 C语言结构体指针变量文章软件开发程序设计
keil c51程序设计中集中精确延时方法 1使用定时器/计数器实现精确延时单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时... 2023-06-13 C51软件延时汇编语言晶振文章软件开发程序设计
ARM程序由于字节对齐引起的问题深入分析 首先说说,什么叫对齐。如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;半字对齐的特征是bit0=0,其他位为任意值。字对齐的特征是bit1=0,bit0=0,其他位为任意值。如果一个数据是以能被4 整除的地址开始的连续存储,那么它就是字对齐,否则就是非字... 2023-06-13 ARM字节对齐偶地址文章软件开发程序设计
从一维数组看sizeof和strlen 前几天学习一维数组的赋值的时候遇到这样一个问题,程序如下:char a[]="hello";char b[5]={'h','e','l','l','o'};char c[]={'h','e','l','l','o','\0'};char *d="hello";printf("%d,%d\n",sizeof(a),strlen(a));printf("%d,%d\n",sizeof... 2023-06-13 一维数组sizeofstrlen指针文章软件开发程序设计
如何使用assert_param 在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。所谓有效的参数是指满足规定范围的参数,比如... 2023-06-13 STM32assert_paramrelease程序调试文章软件开发程序设计
C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。1、 防止一个头文件被重复包含#ifndefCOMDEF_H#defineCOMDEF_H//在这里写头文件内容#endif2、 重新定义一些类型,防止由于各种平台和编译器的不同,... 2023-06-13 C语言宏定义define头文件文章软件开发程序设计
编程中常见错误原因 1.拼写错误a) 变量名,宏名,函数名等拼写错误,在编译阶段直接报错;b) 变量名,宏名,函数名等拼写为相近的变量名,宏名,函数名等,在运行时出错;2.逻辑错误a) if语句的真值逻辑判断,没有包括全部的条件,或者包含了不需要的条件;b) 选择计算方式时,采用了错误的计算方法;3.边界值问题(Off-one)a) i... 2023-06-13 编程技巧程序设计经验分享函数文章软件开发
算法优化的重要性 前些日子,在开发一个单片机的产品时,遇到这么一个问题,就是要将一个无符号的16位数,乘以1.2288后,再赋给另一个无符号的16位数。用C语言可以描述如下:INT16U x,y;y = (INT16U)((float)x * 1.2288); // 注:x的取值范围是500到16000由于单片机采用的NXP的LPC762,属于51系列的,主频为... 2023-06-13 C语言浮点数算法KeilC51文章软件开发程序设计
使用软件降低功耗的方法。 之所以使用“应用软件”的说法,是为了区分于“系统软件”或者“实时操作系统”。软件对于一个低功耗系统的重要性常常被人们忽略。一个重要的原因是,软件上的缺陷并不像硬件那样容易发现,同时也没有一个严格的标准来判断一个软件的低功耗特性... 2023-06-13 中断宏IO模块低功耗文章软件开发程序设计
C语言编程的一些巧妙方法。 一、学习头文件包含巧妙用法当一个头文件被多个C文件包含,且该头文件中定义了这些C文件的公共变量,则在编译的时候会出现重复定义,导致编译通不过,通常我们会采用如下两种做法来解决上述问题。(为了让问题表述得更清楚,我们假设两个C文件C1,C2,C3,一个头文件H1,C1,C2,C3有两个公共变... 2023-06-13 C语言宏定义结构体枚举文章软件开发程序设计
对嵌入式底层开发学习的一点看法 在老师的要求下。把 51 单片机着为入门嵌入式的接触 MCU ,现在想起来,老师做得很对,因为他当时要求我在两个月的时间内把 51 开发板板上的接口驱动都写出来,但是,不要求我把 51 搞太长的时间。只要知道怎么进行控制外设,但是有一点。 UART , IIC , SPI 等常见的驱动程序设计必须... 2023-06-13 嵌入式ucos-ii嵌入式开发程序设计ARM文章软件开发嵌入式OS