跳转到主要内容
MCU加油站
Toggle navigation
首页
技术
新闻
下载中心
互动专区
视频
评测
活动
博客
登录
注册
技术
程序员必知的十大基础实用算法及其讲解
1、快速排序算法 快速排序是由东尼•霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)...
阅读详情
2016-09-09 |
编程工具
如何形成一个良好的编程风格(二)
3、标识符 a、变量的命名 方法一:采用匈牙利命名法。命名规则的主要思想是“在变量中加入前缀以增进人们对程序的理解”。 例如平时声明32位整型变量Length对应使用匈牙利命名法为unLength。现在列出经常用到的变量类型。 变量类型 示例 char...
阅读详情
2016-09-09 |
编程工具
,
Keil相关
如何形成一个良好的编程风格(一)
编程的总则:编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。大多数程序员只是关注程序的可行性,而忽略了可读性,可移植性和健壮性,其实我个人认为,程序的可行性和健壮性与程序的可读性有很大的关系,能写出可读性很好的程序的程序员,他写的程序的可行性和健壮性必然不会差,也会有不错的可移植性。程序的可读性需要程序员有一个良好的编程风格。 好风格应该成为一种习惯。...
阅读详情
2016-09-08 |
编程工具
老外揭秘:原来黑客是这么破解MCU的
这篇文章是俄国人Sergei P.Skorobogatov就读英吉利剑桥大学之博士论文,讲解了各种MCU的攻防技术,堪称一部小百科全书。对于志在研究MCU防护的筒子,能给你很多参考思路:但对于想当黑客的人,我们对后果概不负责! C非侵入式攻击不需要对元器件进行初始化。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。一旦成功,这种攻击很容易普及,并且重新进行攻击不 需要很大的开销。另外,...
阅读详情
2016-09-08 |
MCU
对ARM异常(Exceptions)的理解
ARM支持7种异常。问题时发生了异常后ARM是如何响应的呢?下面一起来学习一下: 所有的系统引导程序前面中会有一段类似的代码,如下: 从中我们可以看出,ARM支持7种异常。问题时发生了异常后ARM是如何响应的呢?第一个复位异常很好理解,它放在0x0的位置,一上电就执行它,而且我们的程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。那么怎么会执行到后面几个异常处理函数呢...
阅读详情
2016-09-08 |
ARM
好文:细谈I2C和SPI总线协议
作者:ce123 IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。 IIC...
阅读详情
2016-09-08 |
I2C
,
SPI
使用Keil判断ARM的冷启动和热启动的方法
常把单片机系统的复位分为冷启动和热启动。所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位。复位后,RAM的内容都没有改变。在某些场合,必须区分出设备的重启是热重启还是冷重启。常用的方法是:确定某内存单位为标志位(如0x40003FF4~...
阅读详情
2016-09-07 |
Keil相关
,
ARM
ARM 7 用户模式下禁止/使能中断的一种方法--使用软中断 for Keil MDK
最近写一个程序,需要在用户模式下关中断,但ARM 7的体系结构决定了中断必须在特权模式下才可以更改,所以想到使用ARM的软中断来实现关中断和开中断。 使用软中断,首先要有硬件指令的支持,ARM有条指令是SWI。 SWI 指令的格式为: SWI {条件} 24 位的立即数 SWI 指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在 SWI 的异常处理程序中提供相应的系统服务,...
阅读详情
2016-09-07 |
Cortex-M3
,
Keil相关
一文通晓各种开关电源拓扑
各种事物都有套路,开关电源的套路就是各种拓扑。对这些拓扑了然于胸,就能看清开关电源的本质。 为了表征各种电压或电流波形的好坏,一般都是拿电压或电流的幅值、平均值、有效值、一次谐波等参量互相进行比较。在开关电源之中,电压或电流的幅值和平均值最直观,因此,我们用电压或电流的幅值与其平均值之比,称为脉动系数S;也有人用电压或电流的有效值与其平均值之比,称为波形系数K。 因此,电压和电流的脉动系数Sv、...
阅读详情
2016-09-07 |
电源
单片机EMC设计需注意的要点
1、单片机的工作频率 1.1 单片机的设计应根据客户的需求来选择较低的工作频率 首先介绍一下这样做的优点:采用低的晶振和总线频率使得我们可以选择较小的单片机满足时序的要求,这样单片机的工作电流可以变得更低,最重要的是VDD到VSS的电流峰值会更小。 当然我们这里需要做一个妥协,因为客户的要求可能是兼容的和平台化的(目前汽车电子的发展趋势就是平台化),选择较高的工作频率可以兼容更多的平台,...
阅读详情
2016-09-07 |
单片机
,
EMC
通过点亮LED的方法调试嵌入式代码
1、前言 在软件开发的过程中,debug(调试)是一个很重要的事情,因为没有百分之百正确的代码,一旦结果不符合预期,我们需要知道问题出在哪里了。 在PC环境下开发应用程序,我们不需要太操心,因为有各式各样的模拟器、调试器可供使用,我们可以追踪到每一行代码的执行过程和执行结果,找出问题只是时间问题而已。但在嵌入式环境下,就有些麻烦了,能用的手段,无外乎两种: 1)使用硬件仿真器定位问题。 2)...
阅读详情
2016-09-06 |
Debug工具
,
LED
嵌入式C语言不可不用的关键字
1、static关键字 这个关键字前面也有提到,它的作用是强大的。 要对static关键字深入了解,首先需要掌握标准C程序的组成。 标准C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分,也就是你的程序。一个程序只有一个副本;只读,这是为了防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段...
阅读详情
2016-09-06 |
C语言
,
编程工具,Keil相关
关于MCU-ISP和ICP的区别
对Flash-based的MCU来说,ISP和ICP几乎是不可或缺的功能。但我们经常被这两个功能搞混,究竟他们的差别在哪里?对客户的意义又是什么?在这里,和大家分享并澄清一些观念,希望对大家有所帮助,进而解答来自客户关于ISP与ICP的疑问。 1)在开发阶段 改code时,不再需要将MCU从板子上拔起来,拿到烧录器上烧,然后再装回去。可以直接利用ISP/ICP Programmer做板上烧录,...
阅读详情
2016-09-06 |
MCU
,
ISP
,
ICP
ARM Cortex-M0 存储器系统
作者:Founder_U 1. Cortex-M0 的两种总线协议: 1)AHB_Lite 系统总线协议:32位地址线,高速高性能访问(Flash, SRAM,总线桥,外部存储器接口) 2)APB 外设总线协议: 32位, 外设等较慢设备通讯(I/O,Timer, UART, Watch Dog。) 系统总线和外设总线是相互分离的,两种总线通过总线桥连接通讯,时钟频率控制不同,...
阅读详情
2016-09-06 |
Cortex-M0
关于单片机中晶振的那些事儿
晶振,在板子上看上去一个不起眼的小器件,但是在数字电路里,就像是整个电路的心脏。数字电路的所有工作都离不开时钟,晶振的好坏,晶振电路设计的好坏,会影响到整个系统的稳定性。所以说晶振是智能硬件的“心脏”。 每个单片机系统里都有晶振(晶体震荡器),在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高...
阅读详情
2016-09-05 |
单片机
,
晶振
‹‹
253 中的第 244
››