作为嵌入式软件工程师认为世界上最可悲的事情是你愉快的敲完代码等待验证,而编译器却提示你No space or unable to allocate space…,顿时心中一万只草泥马在奔腾有没有。好吧没有办法,由于成本和项目需求的限制,不得不选择小Flash的MCU,这就导致了我们为了缩减Flash的空间打开各种优化、一字节一字节的裁剪、各种map文件对比分析,只为省出一点空间,接下来总结一下遇到这种问题时的优化步骤,当然这是在程序设计后期发现Flash的限制从而进行优化,如果你有一个好的编程习惯,应该从构建初期就应该注意资源受限的问题,合理安排驱动函数实现方式、变量类型的定义、标准库的使用等等。So what should I do ?
资源受限MCU Flash空间占用优化步骤:
变频马达主要依靠半导体元件组成的电子电路来驱动马达运转,其中MCU数位控制技术的良寙攸关着马达效率是否理想;而在MCU控制技术日趋成熟,加上FOC演算法助力之下,变频马达效率将逐步跃进。
马达是家电产品中,不可或缺的动力元件,马达的使用量,也是生活舒适程度的指标之一。家电产品中,常见的马达基本上有三种:交流感应马达(AC Induction Motor, ACIM)、直流有刷马达(Brushed DC Motor)、直流无刷马达(BLDC/PMSM)(亦称变频马达)。事实上,马达的分类方式可从以下几点区分。
<strong>.电源</strong>
从电源的使用上来看,可简易分成交流马达与直流马达两大类。
<strong>.控制方式</strong>
MM32F031使用高性能的ARM® Cortex®-M0 32位的RISC内核,最高工作频率为48MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含1个12位的ADC、5个通用16位定时器、1个高级PWM定时器,还包含标准和先进的通信接口:1个I2C接口和SPI接口、1个UART接口。
MM32F031产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
MM32F031产品提供包括32脚与48脚共2种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
本文将为您详解单片机控制板在设计过程中需遵循的三大原则及一些注意事项。
单片机控制板在设计过程中,需要遵循的如下原则:
1、在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM、RAM),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性。
本文介绍ARM的9种寻址方式,基础知识,需要牢固掌握,快来看一下吧。
<strong> ARM的9种寻址方式</strong>
<strong> 1)立即寻址</strong>
操作数是立即数,以“#”为前缀,表示 16 进制数值时以“0x”表示。
例:
MOV R0,#0xFF00 ;0xFF00 -> R0
SUBS R0,R0,#1 ;R0 – 1 -> R0
<strong> 2)寄存器寻址</strong>
操作数的值在寄存器中,指令执行时直接取出寄存器值操作。
例:
MOV R1,R2 ;R2 -> R1
MM32F103 使用高性能的 ARM® Cortex®-M3 32 位的 RISC 内核,最高工作频率 96MHz,内置高速存储器,丰富的增强 I/O 端口和联接到两条 APB 总线的外设。所有型号的器件都包含 2 个 12 位的 ADC、2个 12 位的 DAC、2 个电压比较器、3 个通用 16 位定时器和 1 个 PWM 高级定时器,还包含标准和先进的通信接口:2 个 I2C 接口和 SPI 接口、3 个 UART 接口、一个 USB 接口和一个 CAN 接口。
MM32F103 产品供电电压为 2.5V 至 5.5V,包含-40°C 至+85°C 温度范围和 -40°C 至+105°C 的
扩展温度范围。一系列的省电模式保证低功耗应用的要求。
由于嵌入式开发环境的特殊性(交叉编译),我们会用到一些其他的外围工具,这里做简要的说明。并重新介绍一下整个开发环境中,各个工具的使用,及一个简单应用的开发流程。
<strong> SecureCRT : 串口输出显示工具、SSHclient 。</strong>
SecureCRT 是一款支持SSH(SSH1和SSH2)的终端仿真程序,同时支持Telnet和rlogin协议。
这个是最有用的吧,你看到她就会爱上她。并且是可以窗口内多标签,界面和蔼可亲的。
<strong> DNW : USB下载工具。(配合u-boot使用)</strong>
“在本视频中,我将介绍当今最流行的嵌入式处理架构的基础知识,它就是ARM架构·······”
ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。更多详细信息请观看以下视频!
大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能技术也是处理器应用设计的有力工具,可提供:
●更符合成本效益的解决方案
●更大的升级和采用新特性的设计冗余
●有助于产品在激烈竞争市场上脱颖而出的性能和特性
<strong><font size="5">小知识:Cortex-M3对比Cortex-M4</font></strong>
目前,全球的MCU呈百花齐放趋势,欧、美、日、台均表现出众。中国作为全球最大的芯片销售国,每年消耗掉的MCU数量占据全球市场总量的70%左右,然而由中国芯片厂家直接生产的MCU芯片却凤毛麟角,并且绝大部分仍处于低端的4/8位MCU芯片阶段。不过,国内还有宏晶、兆易创新等企业在MCU高端领域发力,未来还是值得期许的!
<strong><font size="5">什么是MCU?</font></strong>
MCU(Micro Controller Unit),又称单片微型计算机(SingleChip Micro computer)不过,MCU可不是一台机器,而是一块集成电路芯片。
汽车作为一部大型的机电一体化设备,汽车电子在汽车整体成本中的比例越来越大,其涵盖了从车身控制、动力传动、车身安全,到车内娱乐的各个方面。
微控制器(MCU)作为汽车电子系统内部运算和处理的核心,也遍布悬挂、气囊、门控和音响等几十种次系统(Sub-System)中。由于汽车作为高速交通工具承载了对用户生命安全的保障,同时汽车经常工作在十分恶劣的环境中,其对内部电子设备的可靠性要求要远高于一般性电子产品。因此汽车电子所用的MCU与一般性产品的结构差异虽然并不很大,而一般的MCU产品由于可靠性不能符合厂商的要求而并不能被选用,这也是汽车电子产品同一般性电子产品市场的区别之一。
<strong><font size="5">技术特性需求</font></strong>
MCU由于内部资源的限制,软件设计有其特殊性,程序一般没有复杂的算法以及数据结构,代码量也不大, 通常不会使用 OS (Operating System), 因为对于一个只有若干K ROM、一百多byte RAM 的MCU来说,一个简单OS 也会吃掉大部分的资源。
对于无OS的系统,流行的设计是主程序(主循环 )+(定时)中断,这种结构虽然符合自然想法,不过却有很多不利之处,首先是中断可以在主程序的任何地方发生,随意打断主程序。其次主程序与中断之间的耦合性(关联度)较大,这种做法 使得主程序与中断缠绕在一起,必须仔细处理以防不测。
随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。
随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。这对我们单片机系统的可靠性与安全性构成了极大的威胁。单片机测控系统必须长期稳定、可靠运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大损失。因此单片机的抗干扰问题已经成为不容忽视的问题。
几十年前,8位单片机(MCU)席卷业界,但现在8位MCU有让位32位架构的趋势,有行业分析师指出,32位和8位单片机还在在不断成长。不过,最早使用MCU的人对BASIC以及Microchip PIC还念念不忘,不过以最新Arduino Uno来说,这就是一个从8位到32位架构转变的典型案例。即使你现在的应用程序只需要一个8位架构,但因为所谓的“智能”设备需求增长过些日子8位就不够用了,值得庆幸的是,现在有大量开源开发工具可以让那些渴望“冒险”的激进工程师使用。
本手册介绍了 32 位基于 ARM Cortex M0 微控制器 MM32F031xx 的固件函数库。
该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface 应用编程界面)驱动,API 对该驱动程序的结构,函数和参数名称都进行了标准化。
MM32F031使用高性能的ARM® Cortex®-M0 32位的RISC内核,最高工作频率为48MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含1个12位的ADC、5个通用16位定时器、1个高级PWM定时器,还包含标准和先进的通信接口:1个I2C接口和SPI接口、1个UART接口。
MM32F031产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
MM32F031产品提供包括32脚与48脚共2种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
这些丰富的外设配置,使得MM32F031产品微控制器适合于多种应用场合:
作者:sunheshan
<strong><font size="5">1、 异常</font></strong>
M3支持15个系统异常,240个外部异常IRQ,其中NMI,复位,hardfault三个异常的优先级固定不可更改且是负数,其余的都可编程。
M3的异常分为抢占优先级和子优先级。
<strong><font size="5">2 、关于中断优先级</font></strong>
大家都用过计算器,有没有想过它是怎么实现的呢?这里我不详述计算器的原理,而只对思路进行简单介绍。等我们学会了单片机,也可以亲手制作一个计算器。
<strong><font size="5">用电路进行数学计算</font></strong>
通过电路进行数学计算,应该怎么做呢?为了便于理解,下面我举个很简单的例子。
MM32F031 主系统由以下部分构成:
二个驱动单元:
- CPU 内核系统总线(S-bus)
- 通用DMA
三个被动单元
- 内部SRAM
- 内部闪存存储器
- AHB 到APB 的桥(AHB2APBx),它连接所有的APB 设备
这些都是通过一个多级的AHB 总线构架相互连接的,如错误!未找到引用源。所示:
<center>图1. MM32F031 系统架构</center>





