如何让你的设计少走弯路,提高单片机抗干扰简述 下面讨论一下如何让你的设计避免走弯路:抗干扰体现在2个方面,一是硬件设计上,二是软件编写上。这里重点提醒:在MCU设计中主要抗干扰设计是在硬件上,软件为辅。因为MCU的计算能力有限,所以要在硬件上花大工夫。看看干扰的途径:1:干扰信号干扰MCU的主要路径是通过I/O口,一是影响了MC... 2023-06-13 程序设计单片机抗干扰文章软件开发
GCC编程被汇编文件名后缀的大‘S’和小‘s’坑了 其实前段时间就遇到这个问题了,在把IAR下的工程移植到Codewarrior和KDS(这两个IDE都是用的GCC编译器)过程中,到最后老是卡着编译不过去,折腾了好久,最后才想到这个问题。那就是在IAR和Keil MDK下,其编译器会把.s(注意是小s,康熙来了的那个)当做汇编文件来处理编译,而对Codewarrior... 2023-06-13 GCC编程汇编文件名后缀sIAR嵌入式文章软件开发程序设计
“Hello world!”的N种写法 通过写一个成功的“Hello world!”,可以实践这门语言最基本的语法特性,还可以带给自己成就感,真是一举两得。C/C++语言本身有很多特性,如果能够将这些技术分解出来变 成一个个的“Hello world!”,并且将这些技术点到为止,貌似也算是一件善事。这里,列举了10... 2023-06-13 编译器语言functorfileC编程文章软件开发程序设计
嵌入式编程经验 嵌入式编程最难的两部分就是interrupt和MM(memory manage),有些人可能感觉不到,那是因为太多数情况下芯片制造商都帮你写好了,但是如果你本身就在为芯片制造商工作,那你就必须自己会写配置文件了,这两个东西之所以比较难是因为要用汇编或类C来写,属于比较低层的东西,中断有外部... 2023-06-13 嵌入式编程经验程序设计文章软件开发嵌入式OS
如何编写高效率稳定的单片机代码 由于单片机的性能同电脑的性能是天渊之别的,无论从空间资源上、内存资源、工作频率,都是无法与之比较的。PC 机编程基本上不用考虑空间的占用、内存的占用的问题,最终目的就是实现功能就可以了。对于单片机来说就截然不同了,一般的单片机的Flash 和Ram 的资源是以KB 来衡量的... 2023-06-13 单片机编程代码文章软件开发程序设计
可变参数函数的出入栈顺序 今天在一个论坛上, 看到printf的题,就做了一下。后来做错了。。看了看解析。是有关printf() 这种可变参数的函数的出入栈的顺序。。入栈是从右往左。。出栈是从左往右。。int a = 0 , b = 0 ;printf("%d ,%d ,%d ",a++ ,++b , a+b ) ;入栈操作先执行 a+b。。在执行++b ,... 2023-06-13 可变参数函数出入栈顺序程序设计文章软件开发
【技术分享】C8051F330 Flash访问单元 头文件自己搞吧,不贴了,写Flash时候记得先要擦除。代码如下/*02 ================================================================================03 File Name : Flash.c04 Description : C8051F330 Flash操作单元06 Version... 2023-06-13 C8051F330Flash访问单元单片机程序设计文章软件开发
嵌入式的界面处理机制的模板 一、嵌入式的菜单模板之数据结构1:菜单的组织形式第一步就是有个好的结构体。//定义菜单类型typedefenum{//0,1,2,...=parent&title,UISTR_SPACE-topmenuUIMENU_POPUP=-1,/*有下级菜单*/UIMENU_HASVALUE=-2,//此菜单有数值显示或设置UIMENU_CUSTOM=-3,/*有需要用户确认界... 2023-06-13 嵌入式菜单模板数据结构菜单解析文章软件开发程序设计
超声波测距的最快算法 ;利用超声波测距,都是统计超声波发出_到_接收的时间,然后再换算成距离;对于时间的统计,通常都是使用计数器完成;超声波发射后,启动计数器,收到回波后,取出计数值进行换算;;51单片机内部的计数器,是对机器周期进行计数的;它的数值,和距离之间,有什么关系呢 ?;----------------------... 2023-06-13 超声波测距最快算法程序设计文章课设毕设测量类
查找嵌入式C语言程序/软件中的缺陷的多种技术 基于模式的静态代码分析、运行时内存监测、单元测试以及数据流分析等软件验证技术是查找嵌入式C语言程序/软件缺陷行之有效的方法。上述技术中的每一种都能查找出某一类特定的错误。即便如此,如果用户仅采用上述技术中的一种或者几种来进行验证,这样的验证方法很有可能会漏... 2023-06-13 查找缺陷嵌入式C语言程序文章软件开发程序设计
C++计时的几种方法说明及例程 1.使用clock()函数头文件:clock()函数,返回“自程序启动到调用该函数,CPU时钟的计时单元数(clocktick)”每过1ms,计数值+1精度:1毫秒#include#includeintmain(){clock_tstart,end;//typedeflongclock_tstart=clock();lo... 2023-06-13 C++计时程序设计编程文章软件开发
51单片机精确延时程序的编写 51单片机精确延时程序(晶振12MHz,一个机器周期1us.)几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.一. 500ms延时子程序程序:.(晶振12MHz,一个机器周期1us.)void delay500ms(void){u... 2023-06-13 51单片机延时程序晶振三层循环文章软件开发程序设计
一个字符串,将数字字符和其他字符分开存放的程序 程序1:#include #include using namespace std;int main(){char *ch=new char[];//定义一个动态char数组int *num=new int[];//定义一个动态int数组coutch;//输入字符串cout<<"这串字符串里数字有:"< 2023-06-13 C++程序设计字符串数字字符文章软件开发
main函数之前与之后 一种解释实际上,在可执行文件被加载之后,控制权立即交给由编译器插入的Start函数,它将对后面这些全局变量进行准备: _osver 操作系统的构件编号 _winmajor操作系统的主版本号 _winminor操作系统的次版本号 _winver操作系统完全版本号 __argc命令行参数个数 __argv指向参... 2023-06-13 main函数初始化栈指针C++文章软件开发程序设计
【IAR警告】Warning[Pa082] 经典嵌入式笔试题关键字volatile有什么含意?并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器... 2023-06-13 程序设计嵌入式笔试题IAR文章软件开发
结构体大小问题 结构体(struct)的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.struct{char a;short b;char c;}S1;struct{char a;char b;short c;}S2;分别用程序测试得出sizeof(S1)=6 , sizeof(S2)=4可见,虽然两个结构体... 2023-06-13 结构体字节对齐sizeof优化对齐文章软件开发程序设计
Java异常小结 我们来看看c语言中的出错判断,这种出错判断完全是程序员自己编写的,一般我们用”return-1”做最后判断的语句,然后可以判断函数的返回值就可以知道函数有没有出错,但是这样有没有问题?就比如说在一个程序体内有多个出错判断的语句,我们这样只能知道函数体出现了问题... 2023-06-13 Javagoto异常类捕获异常文章软件开发程序设计
ucos堆栈中字节对齐的问题 关于堆栈对齐的问题程序中出现了一个奇怪的问题char g_cpTask2Buffer[200];void Task2(void *arg){...sprintf(g_cpTask2Buffer,"%.3f", ADCInfoArray[0].m_fVolt);...}ADCInfoArray[0].m_fVolt是一个float值。在执行完 sprintf 后,无论m_fVol... 2023-06-13 堆栈8字节对齐ucos存储地址文章软件开发程序设计
IAR中的位操作之一:位清除 例:_DEVICE_RCC.CR &= ~(BIT(1)); // 清除CR的第(1+1)位,相当於 _DEVICE_RCC.CR &= 0xFFFF FFFD(以下内容的编译为IAR5.20) \ 00000000 0748 LDR.N R0,??main_0 ;; 0x40021000 \ 00000002 0168 LDR R1,[R0, #+0] \ 0000000... 2023-06-13 IAR位操作位清除程序设计编程技巧文章软件开发
嵌入式c语言调试开关 在调试程序时,经常会用到assert和printf之类的函数,我最近做的这个工程里就有几百个assert,在你自认为程序已经没有bug的时候,就要除去这些调试代码,应为系统在正常运行时这些用于调试的信息是无用的,而且会占用时间和空间。怎么删除呢,俺以前都是用笨方法,一个一个注释,能用注释... 2023-06-13 嵌入式C语言调试开关文章软件开发程序设计
串口调试总结 调试过程中对接口协议有了一定了解,对芯片max232了解还是比较深入的最流行的串口程序,用了特权同学程序,直接用来跑,果断不行啊,然后仔细看了遍程序,发现一些问题,程序计数中算了校验位,却没有对校验位进行传输,上位机上自然还要设置校验位(odd奇,even偶);后面以为还有一个错误,后来发... 2023-06-13 串口调试单片机经验分享程序设计文章软件开发
FLASH程序存储器常见的编程方法 这里我们列举了三种方法:(1)传统的并行编程方法;(2)通过串行口进行在线编程ISP(In System Programmability) 对器件或电路甚至整个系统进行现场升级或功能重构;(3)在运行中,应用程序控制下的应用在线编程IAP (In Applocation Programing) 简单地说就是在某一个Section中运行... 2023-06-13 FLASH程序存储器在线编程并行编程文章软件开发程序设计
PLC常用程序设计语言简介 在可编程控制器中有多种程序设计语言,它们是梯形图语言、布尔助记符语言、功能表图语言、功能模块图语言及结构化语句描述语言等。梯形图语言和布尔助记符语言是基本程序设计语言,它通常由一系列指令组成,用这些指令可以完成大多数简单的控制功能,例如,代替继电器、计数器、... 2023-06-13 可编程控制器程序设计PLC文章软件开发
makefile 中赋值符号的区别 我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(OPT),add) VRE += “Kelly!”e... 2023-06-13 Makefile赋值符号make命令文章软件开发程序设计
Python调试技巧 1. print不要看不起print,这是一切调试的起点,即便是调试Java或者C这种巨麻烦的编译语言,print仍然是常用工具。当然,我们讲的是Python,是比Java和C要方便100倍的动态解释语言,因此这个print就更有力了。至于语法如何,不用我讲了吧。2. reloadpython本身就是一个交互式环境,你完... 2023-06-13 Python调试技巧reloadexeclogging文章软件开发程序设计