嵌入式每日500(1)231101 (Cortex-A,-R,-M架构、AMBA总线、CMSIS接口、STM32F072家族芯片的二十几种能实现的外设功能,STM32CubeMX软件生成文件结构)

1.Cortex-A,-R,-M架构

在这里插入图片描述
在这里插入图片描述

2.Cortex-M0/1/3内核的指令集

在这里插入图片描述

3.Cortex-M0内核内部结构

在这里插入图片描述

Cortex-M0处理器的各部分功能如下。

1)处理器内核包含寄存器组、算术逻辑单元(ALU)、数据总线和控制逻辑。按照设计要求,流水线可以工作在取指、译码和执行三种状态下。

2)嵌套向量中断控制器(NVIC)用于处理最多32个中断请求和一个不可屏蔽中断(NMI)输入,NVIC需要比较正在执行中断和处于请求状态中断的优先级,然后自动执行高优先级的中断。

3)唤醒中断控制器(WIC)在低功耗应用中使用。当微控制器的大部分模块关闭后,微控制器会进入待机状态。此时,WIC可以在NVIC和处理器处于休眠的情况下执行中断监测功能,当WIC检测到一个中断时,会通知电源管理器给系统上电,让NVIC和处理器内核执行剩下的中断过程。

4)调试子系统由多个模块构成,用于处理调试控制、程序断点和数据监视点。当调试进行时,处理器内核会自动进入暂停状态。

5)JTAG和SWD接口提供了通向内部总线系统和调试功能的入口。JTAG一般用作测试功能,而SWD则是一种新型接口,只需两根线(时钟线和数据线)就可以完成芯片编程或实现与JTAG相同的调试功能。

6)内部总线系统、处理器内核的数据通路以及AHB-LITE总线均为32位宽,其中AHB-LITE是片上总线协议,应用于多款ARM处理器中。AMBA是ARM开发的总线架构,已经广泛应用于IC设计领域。

4.AMBA总线(AHB、ASB、APB)

ARM研发的AMBA(Advanced Microcontroller Bus Architecture)提供了一种特殊的机制,可将RISC微控制器集成在其他IP芯核和外设中。

2.0版的AMBA标准中定义了三组总线:高级高性能总线(Advanced High-performance Bus,AHB)、高级系统总线(Advanced System Bus, ASB)和高级外设总线(Advanced Peripheral Bus, APB)。

5.微控制器软件接口标准(CMSIS)

5.1 CMSIS提供了哪些标准内容?

CMSIS提供了以下标准化的内容。

❑标准化的操作函数,用于访问NVIC、系统控制块(SCB)以及SysTick定时器。

❑使用Cortex-M微控制器特殊指令的标准化函数。因为有些指令不能由普通的C代码生成,如果需要这些指令,就可以使用CMSIS提供的相应函数来实现。

❑系统异常处理的标准化命名。当系统异常有了标准化命名以后,在一个操作系统里支持不同的设备驱动库也变得更加容易。

❑系统初始化函数的标准化命名。通用的系统初始化函数被命名为“SystemInit()”,提高了软件的兼容程度。

❑为时钟频率信息建立标准化的变量。这个变量被命名为“SystemFreq”或者“System CoreClock”,用于确定处理器的时钟频率。

5.2 CMSIS的组织结构

CMSIS的软件结构可以分为核心外设访问层、中间件访问层、设备外设访问层和外设访问函数等
在这里插入图片描述

5.3 CMSIS提供的文件

在这里插入图片描述

6.STM32F072家族芯片的16个外设(通信接口下面还有6种)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.STM32CubeMX软件生成文件结构

在这里插入图片描述
1)ONE_LED.ioc文件是项目文件,保存在所生成项目的根目录下。该文件包含了通过STM32CubeMX软件的用户界面保存的项目用户配置和代码生成设置。

2)“Drivers”文件夹保存的是固件库副本,其中:“CMSIS”文件夹内的文件提供了对Cortex-M处理器内核的支持,而“STM32F0xx_HAL_Driver”文件夹则包含了所有外设的驱动源文件和头文件, 即我们所说的HAL库的主要部分。“Drivers”文件夹内的文件结构如图2-97所示。

在这里插入图片描述

3)“MDK-ARM”文件夹是STM32CubeMX软件针对MDK-ARM集成开发环境生成的项目开发和调试的文件,如图2-98所示。双击“One_LED”, μVision5项目文件可以打开所生成的项目。
在这里插入图片描述
4)项目根目录下的“Inc”和“Src”文件夹包含了STM32CubeMX软件为外设、GPIO或中间件生成的文件。

在“Inc”文件夹中,“mxconstants.h”文件保存了用户应用程序中基本宏定义部分,比如我们在STM32CubeMX软件中定义的常量或对引脚的定义描述;“stm32f0xx_hal_conf.h”文件定义了在HAL驱动下所使用的外设模块、时钟频率和系统配置参数等,而“stm32f0xx_it.h”文件则是中断处理的头文件。“Inc”文件夹内的文件结构如图2-99所示。

“Src”文件夹内的文件结构如图2-100所示。其中“main.c”文件是主程序文件,保存用户定义的应用程序代码。另外,在“main.c”中通过调用“HAL_init()”函数可以将微控制器复位到一个已知的状态,同时复位所有外设,初始化Flash存储器接口和系统节拍器,配置及初始化时钟及I/O口等;“stm32f0xx_hal_msp.c”文件可以按照用户配置定义引脚分配、时钟使能、配置DMA和中断等初始化代码。“stm32f0xx_it.c”文件内部包含了由用户编写的Cortex-M0处理器及外设的中断处理程序。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值