下载
<strong>1、 编辑器</strong>
程序统一使用VC的编辑器。
<strong>2、 程序文件的结构 </strong>
如果没有涉及使用平台化的用户文件,通常只能有一个用户主程序文件。
用户程序文件的内容按说明、编译宏定义、包含文件、用户数据类型定义、管脚定义、常量、变量、正文、长的常量数组的顺序编写。
<strong>2.1 说明 </strong>
说明:说明位于用户程序文件的开头,主要内容有:
(1)版权信息。
(2)文件名称。
(3)程序说明:说明程序用途、功能及使用方法等。
(4)版本记录。
(5)开发环境。
<strong> 一、关于单片机开发</strong>
单片机简介
单片机编程语言
汇编语言
C语言
单片机开发过程及仿真
<strong> 1、单片机简介</strong>
何谓单片机?一台能够工作的计算机要有这样几个部分组成:CPU(运算、控制)、RAM(数据存储)、ROM(程序存储)、输入输出设备(键鼠、显示器等接口)。在PC机上这些部分被分成若干芯片,安装在主板上。而在单片机中,这些全部做在一个集成电路芯片上,就是——单片机(单芯)。
单片机能干些什么?相对于电脑以及大型计算机来说,单片机是小型计算机。电脑等能完成复杂的工作,而对于简单控制应用,如控制彩灯闪亮,广告牌字幕,温湿度采集等,单片机便派上了用场。
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)、全新的硬件除错单元等等,都带给了使用者全新的体验和更便利、 更有效率的操作。
<strong> 1.1 RealView MDK简介</strong>
RealView MDK是ARM公司最先推出的基于微控制器的专业嵌入式开发工具。它采用了ARM的最新技术工具RVCT,集成了享誉全球的μVision IDE,因此特别易于使用,同时具备非常高的性能。与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。
<strong> 1.2 J-LINK仿真器介绍</strong>
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>
<strong>一、Cortex-M3环境介绍</strong>
Cortex-M3程序开发使用Keiluvision4软件,该软件是由KEIL(anARMcompany)公司开发的一个IDE开发环境,包括工程管理,链接设置等等。 Keiluvision4开发环境界面优美、功能强大、芯片种类多、仿真能力强,是众多工程师首选开发环境之一。
Keiluvision4开发环境中比较常用的菜单如下所示:
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种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
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 的
扩展温度范围。一系列的省电模式保证低功耗应用的要求。
本手册介绍了 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产品微控制器适合于多种应用场合:
MM32F031 主系统由以下部分构成:
二个驱动单元:
- CPU 内核系统总线(S-bus)
- 通用DMA
三个被动单元
- 内部SRAM
- 内部闪存存储器
- AHB 到APB 的桥(AHB2APBx),它连接所有的APB 设备
这些都是通过一个多级的AHB 总线构架相互连接的,如错误!未找到引用源。所示:
<center>图1. MM32F031 系统架构</center>
概述
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 的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
<strong><font size="5">概述</font></strong>
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 接口。
Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成8GB了。
比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的cache。另外在CM3中,Both小端模式和大端模式都是支持的。
<strong>Thumb指令</strong>
Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。Thumb指令体系不完整,只支持通用功能。必要时仍需要使用ARM指令,如进入异常时。
说明:Thumb指令的格式与使用方式与ARM指令集类似,而且使用并不是很频繁,建议这部分内容选修。
<strong>简单的Thumb程序</strong>
<strong>Thumb-2指令集</strong>
同时支持16位和32位指令系统
Bit[15:11]
0b11101
0b11110
0b11111 紧邻的两个半字构成一条32位指令
其他:皆为16位指令
调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况从而达到调试的目的。由于企业程序的宿主就是开发它的计算机本身,因此企业程序设计比起底层程序设计,特别是单片机的程序设计调试来的更直观,调试也更方便。
本文将详细为大家介绍并讲解ARM的指令集。
比如:
ADC :带进位的加法
(Addition with Carry)
ADC{条件}{S} <dest>, <op 1>,<op 2>
dest = op_1 + op_2 + carry
ADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。
128 位结果:寄存器 0、1、2、和 3
第一个 128 位数: 寄存器 4、5、6、和 7
第二个 128 位:寄存器 8、9、10、和 11。
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)、全新的硬件除错单元等等,都带给了使用者全新的体验和更便利、 更有效率的操作。