一、关于ARM-Cortex_M4处理器
ARM-Cortex_M3和ARM-Cortex_M4处理器使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位的,两者均基于ARMv7-M架构。
1、 Cortex_M处理器使用的指令集架构(ISA)为Thumb ISA,其基于Thumb-2技术并同时支持16位和32位指令。
2、ARM-Cortex_M3和ARM-Cortex_M4处理器特点:
①三级流水线设计
②哈佛总线架构,具有统一的存储器空间:指令和地址总线使用相同的地址空间。
③32位寻址,支持4GB存储器空间。
④具有NVIC(嵌套向量中断控制器)的中断控制器。
⑤支持可选MPU(存储器保护单元)
⑥可选的浮点指令(单精度)
3、ARM微控制器的构成:
处理器、程序存储器(如FLASH)、SRAM、外设、内部总线、时钟生成逻辑(包括锁相环)、复位生成器及这些信号的分布网络、电压调节和电源控制器回路、其它模拟部件(ADC/DAC等)、I/O部分等。
处理器只占芯片中的一小块区域,以下为微控制器的多个模块。
二、ARM-Cortex_M3/M4处理器开发
(一)开始需要准备什么
- 开发组件(keil微控制器开发套件 MDK-ARM)
- 开发板
- 调试适配器
- 软件设备驱动
- 示例和代码
- 文档及其他(用户手册、数据手册以及应用笔记)
- 其他硬件(逻辑分析仪、示波器、usb分析仪、万用表等)
(二)软件开发流程:
- 创建工程
- 添加文件到工程
- 设置工程选项
- 编译和链接
- flash编程
- 执行程序和调试
常见的软件开发流程
(三)软件流程
- 轮询
轮询方式的简单处理应用
对于简单的任务,处理器可以等待数据准备好后进行处理,而后再等待。
2、中断驱动
外设在需要服务时可以将处理器唤醒。在中断驱动的应用中,不同外设的中断可以指定为不同的中断优先级。
简单的中断驱动应用
一般情况下,外设服务的数据处理分为两部分,一部分是需要快速处理,而一部分则可以执行得稍微慢一些。这时可以将中断驱动和轮询结合起来。
3、多任务系统
实时操作系统(RTOS)可以用于处理任务调度。RTOS可以将处理器时间分为多个时间片且将时间片分给所需的进程,以实现多个进程同时执行。需要一个定时器来记录RTOS的时间,且在每个时间片的最后,定时器会产生定时中断,它会触发任务调度器且确定是否要执行上下文切换。若需要执行,当前正在执行的任务就会被暂停,处理器转而执行另一个任务。
RTOS还具有信号量和消息传递的特性。
三、C程序中的数据类型
四、输入、输出和外设访问
微控制器都有多个I/O接口和定时器、实时时钟(RTC)等外设。ARM-Cortex-M3 andM4 除了GPIO/SPI/UART/I2C等常见的接口外设,还有许多高级接口外设,如USB/CAN/以太网及ADC/DAC等模拟接口,需要度微控制器提供的用户手册才能知道用法。
对于这些微控制器,外设经过了存储器映射,也就是寄存器可以从系统存储器映射中访问。为了用C程序访问这些外设,可以使用指针。
一般来说,外设在使用前需要初始化,一般包括以下几个步骤:
- 若需要,设置时钟控制回路使能连接到外设和对应引脚的时钟。(外设时钟一般是默认关闭的。需要在使用外设的时候使能时钟;有时,还需要使能外设总线系统的时钟。)
- 有时,还需要配置I/O引脚的操作模式。大多微控制器都有复用的I/O引脚。比如:配置引脚的输出、输入方向,功能。有时还需要编程其它的配置寄存器,定义输出类型等预想的电气特性(电压、上拉、下拉、开漏或推挽等)
- 外设配置
- 中断配置(需要中断操作,需在中断控制器NVIC ,使能中断和配置中断优先级)
需要设置各种外设模块中的外设寄存器。
微控制器接口:
USB转UART可以printf,使用串口工具。
五、Cortex 微控制器软件接口标准(CMSIS)
CMSIS-core的组织架构:
CMSIS文件被集成在微控制器供应商提供的设备驱动库软件包里。一般CMSIS定义为三层:
- 内核外设访问层 :内核寄存器 和内和外设的辅助函数,地址定义等
- 设备外设访问层:外设寄存器的地址定义及中断分配、异常向量定义
- 外设访问函数
参考资料:ARM-Cortex_M3与Cortex_M4权威指南