Cortex-M0学习

状态与模式:

传统的ARM7核有ARM状态和Thumb状态,有7种模式,比较复杂

Cortex-m0只有调试状态和Thumb状态,有两种模式,两种模式相当于内核态和用户态

内核寄存器

寄存器组:R0~R15,其中R13也是堆栈指针SP。SP在不同的物理位置有两个堆栈指针,一个是MSP(主栈指针),用于处理异常;一个是PSP(进程栈指针),一般没有必要使用,由CONTROL寄存器配置。

特殊寄存器:xPSR--->状态寄存器:APSR,IPSR,EPSR--->以前2个:CPSR,SPSR

                           APSR--->应用程序状态寄存器:NZCV

                          IPSR--->中断程序状态寄存器:用了6位,当前执行的中断号

                          EPSR--->执行程序状态寄存器:只用1位,Thumb位

                    PRIMMASK--->中断屏蔽寄存器:中断总开关

                   CONTROL--->控制寄存器:选堆栈指针

存储系统

外部设备、私有外设和存储器统一编址

私有外设:内置的中断向量控制器和调试设备

中断与异常

中断处理是嵌入式系统中非常常见的功能,它是一种常见的处理人机交互及机机交互的手段,为了管理不同的设备中断,通常在CPU和设备之间增加一个向量中断控制器(VIC),屏蔽掉不同设备之间的差别(分层设计),由于嵌入式系统中设备众多,Cortex-M0之间将VIC集成到内核中:

而且在传统的 处理器中,异常处理的起始地址是固定的,内核只有一个IRQ输入,多个中断需要共享一个IRQ处理入口,中断处理也要访问中断控制器才能确定当前发生的中断。而对于Cortex-M0处理器,内置的中断控制器支持向量中断,这意味着不同的异常向量是独立的,而且中断服务程序的入口自动分配,无须软件干预。

中断使能:SETEA,CLRENA

中断挂起:SETPEND,CLRPEND

中断优先级:SCB(系统控制块)的特定区域IRP0~IRP31

CMSIS--Cortex-M软件接口规范:

CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。







CMSIS软件层次

CMSIS可以分为多个软件层次,分别由ARM公司、芯片供应商提供。

其中ARM提供了下列部分,可用于多种编译器

● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。

● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,芯片供应商扩展下列软件层

● 微控制器外设访问层:提供片上所有外设的定义。

● 外设的访问函数(可选):为外设提供额外的助手函数。CMSIS为Cortex-Mx微控制器系统定义了:

● 访问外设寄存器的通用方法和定义异常向量的通用方法。

● 内核设备的寄存器名称和内核异常向量的名称。

● 独立于微控制器的RTOS接口,带调试通道。

● 中间设备组件接口(TCP/IP协议栈,闪存文件系统)。







CMSIS包含的组件

1、外围寄存器和中断定义: 适用于设备寄存器和中断的一致接口

2、内核外设函数:特定处理器功能和内核外设的访问函数

3、DSP 库:优化的信号处理算法,并为 SIMD 指令提供Cortex-M4 支持

4、系统视图说明(SVD):描述设备外设和中断的XML 文件。

/****************************************/

很遗憾,有很多的东西我没有办法一一给大家回复,所以我建立了一个群,供大家一起交流!

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cortex-M0 是 ARM 公司推出的一款低功耗、低成本的 32 位微控制器处理器。Cortex-M0 例程是针对该处理器的代码示例集合,用于展示 Cortex-M0 的特点和使用方法。 Cortex-M0 例程通常涵盖了从基础的 GPIO 控制,到中断处理、定时器、串口通信等多个方面的功能代码。通过这些例程,开发者可以学习如何使用 Cortex-M0 处理器来实现各种任务。 在 Cortex-M0 例程中,首先需要配置和初始化相关硬件模块,如 GPIO 控制器、定时器等。然后,可以根据需求编写相应的代码来实现期望的功能。例如,如果想要通过 GPIO 控制 LED 的闪烁,可以设置引脚方向为输出,然后在循环中将引脚电平高低交替控制。如果想要实现定时器中断功能,可以设置定时器的周期和中断使能位,然后编写相应的中断服务函数来执行需要的操作。 Cortex-M0 例程不仅提供了硬件操作的代码示例,还提供了一些开发工具和环境的配置说明,以及对代码编译、下载和调试等方面的介绍。这些例程可以帮助开发者快速上手 Cortex-M0 处理器,并加深对其特性和应用的理解。 总之,Cortex-M0 例程是用于展示 Cortex-M0 处理器特点和使用方法的代码示例集合,可以帮助开发者学习和应用 Cortex-M0 处理器来实现各种功能。通过这些例程,开发者可以更加熟悉 Cortex-M0 的开发流程和操作方法,从而提高开发效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值