<strong>上机1 发光二极管的闪烁</strong>
<center><img src="http://mm32.eetrend.com/files/2016-08/wen_zhang_/100002279-7131-1.png&q…; alt=""></center>
;开关断开,发光二极管灭;开关闭合,奇偶数发光二极管间隔0.1s交替点亮。
ORG 0
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
<strong>一、NVIC概览 ——嵌套中断向量表控制器</strong>
NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。
NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外, NVIC 还支持一个“永垂不朽”的不可屏蔽中断( NMI)输入。
NVIC 的访问地址是 0xE000_E000。所有 NVIC 的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字/字节的方式访问。
关于systick在Cortex-M4中有讲到,我们大家平常在单片机开发中经常会使用到延时函数,一般的,我们会使用变量自加循环判断的方法来实现软件延时。但是这种方法有个弊端——延时时间不精确。
主要体现在:
1、在C语言编写的延时函数中,每条函数语句的执行时间可能不同,这样,在实现延时的过程中,想通过增加或减少函数语句来实现延时的增加或减小控制起来不太方便,时间的精确性当然很难控制;
2、由于各种不同的控制器运行的主频可能不同,执行相同的延时函数所需要的的时间值可能就不同。这样,使得这种延时函数在不同的平台上移植起来时间的精确性就更不可靠。所以,我们就不使用这样的延时方法。
(MCU测试部分)
<strong>一.MCU测试</strong>
1.mcu工作电压及电流,
测试MCU工作电压是否在工作电压范围,电压过高会影响MCU的正常工作甚至烧坏,工作电压过低会影响MCU的外围电路驱动能力,甚至导致外围电路不能正常工作。
2. mcu静态电流
静态电流是衡量MCU性能的主要参数之一,静态电流越小越好,根据MCU规格书测试静态电流是否符合要求,一旦MCU有损坏的话,静态电流就会变大,会增加产品的静耗,致使产品整体功耗增加。
3.mcu的振荡频率
如MCU为外接晶振型的,需要检测其正常工作时MCU的晶振输入脚的振荡频率是否正确,如果晶振振荡频率不符合要求则会影响产品的定时及延时,甚至不能正常工作。
科技的发展,身边的智能产品越来丰富,扫地机器人、手机、VR、穿戴设备及车载仪表、导航仪等,这些产品都具备个智能的“芯”,今天,主要介绍这些“芯”的特点与联系。
<strong>ARM</strong>
ARM处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。更早称作Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。20世纪90年代,ARM 32位嵌入式RISC(Reduced lnstruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。
Cortex-M3是一个32位的核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求。在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,最多可减少12个时钟周期数,在实际应用中可减少70%中断。
<strong>一、工作模式</strong>
线程模式和手柄模式。
<center><img src="http://mm32.eetrend.com/files/2016-07/wen_zhang_/100002244-6946-1.png&q…; alt=""></center>
当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
<strong> 前后台系统 :</strong>
应用程序一般是一个无限的循环,可称为前后台系统或超循环系统。循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。中断服务程序处理异步事件,这部分可以看成前台行为。后台也可以叫做任务级,前台也叫中断级。时间相关性很强的关键操作一定是靠中断服务程序来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到进一步处理,所以这种系统在处理的及时性
上比实际可以做到的要差。这个指标称作任务级响应时间。
<strong> 实时操作系统(RTOS):</strong>
ARM公司的Cortex-M0应用于各种微控制器(MCU)中,并可让研发工程师以8位的价位创造32位的的效能,并将传统的8位和16位的处理器升级到更高效、更低功耗的32位处理器。
Cortex-M0是Cortex-M家族中的M0系列。最大特点是低功耗的设计。Cortex-M0为32位、3级流水线RISC处理器,其核心仍为冯·诺依曼结构,是指令和数据共享同一总线的架构。作为新一代的处理器,Cortex-M0的设计进行了许多的改革与创新,如系统存储器地址映像(system address map)、改善效率并增强确定性的嵌套向量中断系统(NVIC)与不可屏蔽中断(NMI)、全新的硬件除错单元等等,都带给了使用者全新的体验和更便利、 更有效率的操作。
Cortex-M3的一些特性(一)
<li>处理器状态的自动保存和恢复;</li>
<li>中断向量表读取与处理器状态保存并行处理;</li>
<li>支持尾链技术,当处理背靠背的中断时,不需在两个中断服务子程序之间进行入栈和出栈操作;</li>
<li>可动态重设中断优先级;</li>
<li>NVIC 和 Cortex-M3 处理器核紧密耦合,可尽早处理中断,尤其是晚到的高优先级中断;</li>
Cortex-M3的一些特性(二)
<li>中断的数目可以配置,从 1 到 240;</li>
<strong>概览</strong>
在CM3 上编程,既可以使用C 也可以使用汇编。可能还有其它语言的编译器,但是大多数人还是会在C 与汇编的世界里游弋。C 与汇编都有尺短寸长,不能互相取代。使用C 能开发大型程序,而汇编则用于执行特种任务。
在使用不同的工具链和芯片时,有大量的用法和用量都随之不同。因此,本书不会深入讲解怎样精通一个具体的工具链,也不会大谈如何把程序烧到板子上。在后面的章节会提到一些入门知识,具体内容还需查阅相关的文献和在线帮助文档。
<strong>使用汇编</strong>
作者:dogsun88
<strong>一、进入异常之前处理器可能的状态有:</strong>
1、 handler
2、 线程,MSP
3、 线程,PSP
<strong>二、产生异常时:</strong>
1、 有一个压栈的过程,产生异常时使用PSP,就压入到PSP中,产生异常时使用MSP,就压入到MSP中
2、 会根据处理器的模式和使用的堆栈,设置LR的值(当然设置完的LR的值再压栈)
<strong>三、异常返回时:</strong>
根据LR的值,判读使用那个堆栈,然后再从相应的堆栈中POP数据到寄存器。
<strong>一、Cortex-M3环境介绍</strong>
Cortex-M3程序开发使用Keiluvision4软件,该软件是由KEIL(anARMcompany)公司开发的一个IDE开发环境,包括工程管理,链接设置等等。 Keiluvision4开发环境界面优美、功能强大、芯片种类多、仿真能力强,是众多工程师首选开发环境之一。
Keiluvision4开发环境中比较常用的菜单如下所示:
本文将为您详解单片机控制板在设计过程中需遵循的三大原则及一些注意事项。
单片机控制板在设计过程中,需要遵循的如下原则:
1、在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM、RAM),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性。
<strong>一、定义</strong>
1、上拉就是将不确定的信号通过一个电阻嵌位在高电平!“电阻同时起限流作用”!下拉同理!
2、上拉是对器件注入电流,下拉是输出电流。
3、弱强只是上拉电阻的阻值不同,没有什么严格区分。
4、对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
<strong>二、拉电阻作用</strong>
1、一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
变频马达主要依靠半导体元件组成的电子电路来驱动马达运转,其中MCU数位控制技术的良寙攸关着马达效率是否理想;而在MCU控制技术日趋成熟,加上FOC演算法助力之下,变频马达效率将逐步跃进。
马达是家电产品中,不可或缺的动力元件,马达的使用量,也是生活舒适程度的指标之一。家电产品中,常见的马达基本上有三种:交流感应马达(AC Induction Motor, ACIM)、直流有刷马达(Brushed DC Motor)、直流无刷马达(BLDC/PMSM)(亦称变频马达)。事实上,马达的分类方式可从以下几点区分。
<strong>.电源</strong>
从电源的使用上来看,可简易分成交流马达与直流马达两大类。
<strong>.控制方式</strong>
在项目开发的过程中,发现程序总是死在判断DMA一次传输是否完成这个标志位上。进一步回退分析,发现是在I2C读的过程中,有使用到DMA去取外部I2C设备的data。
但是data并没有读完,Data为32bits,DMA在读到18bits时,就出现读不到data bit了。导致I2C硬件模块不能进一步动作,SCK一直被拉低,没有clock输出,SDA也是如此。
下面是通过示波器抓到的波形:





