嵌入式复习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、定义:嵌入式系统是软件和硬件的综合体.以应用为中心、以计算机技术为基础、软件、硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统

组成:面向应用的嵌入式微处理器,总线和外部接口多集成在芯片内部。软件与硬件是紧密集成在一起

开发方式:采用交叉开发方式,开发平台一般是通用计算机,运行平台是嵌入式系

特点:嵌入性”、“专用性”、“计算机系统”

发展趋势:1.将出现更强大的嵌入式应用软件开发工具和操作系统支持软件。

2.联网和无线通讯将成为必然。

3.进一步实现小尺寸、微功耗和低成本。

4.提供更多多媒体功能和精巧的人机界面。

5.高端的片上系统(SOC)将逐步扩大应用面。

计算机体系结构:冯.诺依曼结构(程序指令和数据放在同一存储器的不同物理位置,CPU

通过同一条总线访问程序和数据,程序指令和数据的宽度是相同的

-存储程序(stored program):

程序以数字形式存在,

可以与数据一样被读写)

、哈佛体系结构(指令和数据可以有

不同的数据宽度,程序与数据有单独的存储器,它们通过不同的总线来访问• 首先到程序指令存储器中读取程序指令,解码后得到数据地址,再到相应的数据存储器中读取数据,执行指令。在执行一条指令的同时可以预先读取下一条指令)

stm32基础知识:1、采用Cortex-M3的内核

2、哈佛结构,数据总线与指令总线分开

3、杰出的功耗控制:STM32经过特殊的处理,对应用中三种主要的功耗需求进行了优化:运行模式下高效率的动态耗电机制;待机时极低的电能消耗和电池供电时低电压工作能力

4、创新设计:有两条外设总线,一条高速(APB2)达72Mhz,一条低速( APB1)达36Mhz

5、最大程度的集合:包含常用的大部分外设,如USB,CAN…

6、易于开发:免费提供STM32固件库对C语言有良好的支持。

二、工作模式:线程模式(在复位时处理器进入线程模式、异常返回时处理器进入线程模式、特权和用户(非特权)代码能够在线程模式下运行)处理模式(出现异常时处理器进入处理模式、在处理模式中,所有代码都是特权访问的)

特权等级转换:(转化图)具体:在处理模式下,通过MSR指令置位CONTROL[0],

退出处理模式进入线程模式时切换到用户访问。在线程模式特权访问下,通过MSR指令置位CONTROL[0],即可由特权访问进入用户访问。

MRS R0 CONTROL

ORR R0, R0, #0x01

MSR CONTROL R0

在处理模式下,通过MSR指令清零CONTROL[0],退出处理模式进入线程模式时切换到特权访问。

MOV R0 #0X00

MSR CONTROL R0 控制寄存器的第0位(control【0】=1,用户访问|=0,特权访问)

寄存器:1、Cortex-M3内核有两个堆栈指针:MSP和PSP、结束复位后,所有代码都使用主堆栈、所有异常都使用主堆栈、异常处理程序(例如SVC)可以通过改变其在退出时使用的EXC_RETURN值来改变线程模式使用的堆栈、在线程模式中,使用MSR 指令对CONTROL[1]执行写操作也可以从主堆栈切换到进程堆栈、堆栈指针r13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由r13指示2、control=1,进程堆栈|control=0,主堆栈

存储器的存储方式:

流水线:Cortex-M3 的流水线分为3级(推演过程)

中断处理:1、异常包括复位、系统故障、外设中断等事件。ARM Cortex-M3处理器的所有异常可以通过NVIC(嵌套向量中断控制器)进行控制,通过NVIC可以设置各个异常的优先等级并对异常进行处理。所有异常都在处理器模式(Handler Mode)中处理。

2、在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,

响应优先级更高的异常,此时产生中断嵌套。

四、stm处理器的工作模式:STM32处理器在复位后电压调节器总是允许的,根据应用方式它以3种不同的模式工作:

运行模式:调节器以正常功耗模式提供1.8V电源(内核、内存和外设)

停止模式:调节器以低功耗模式提供1.8V电源,以保存寄存器和SRAM的内容

待机模式:调节器停止供电。除了备用电路和备份域以外,寄存器和SRAM的内容全部丢失。

启动配置:启动模式选择在STM32F10xxx中,由BOOT[1:0]引脚决定了三种不同的启动模式

八、通用定时器计数模式:

定时器配置:CK_CNT 表示定时器工作频率,TIMx_PSC 表示分频系数

则定时器的工作频率计算公式为:CK_CNT=定时器时钟/ (TIMx_PSC +1)

由此我们可得到STM32单片机1个时钟周期为:T=1/ CK_CNT

例如普通定时器模块的时钟为72MHz ,分频比为7199,那么我们想要得到一个1秒钟的定时,自动重装载寄存器的值需要设定为

TIMx_ARR = ?因为72 000 000 / 7200 = 10KHz

时钟周期T=1/10KHz=100us

100us × 10 000 = 1S

void TIMER2_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

//采用内部时钟给TIM2提供时钟源

TIM_InternalClockConfig(TIM2);

TIM_TimeBaseStructure.TIM_Period = (2000 - 1);

TIM_TimeBaseStructure.TIM_Prescaler = (36000 - 1);

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

//清除溢出中断标志

TIM_ClearFlag(TIM2, TIM_FLAG_Update);

//使能更新事件中断

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

//开启定时器计数

TIM_Cmd(TIM2,ENABLE);

}

Systick

九、DMA概念:让外设和内存间建立一个通道,在主处理器允许下,让外设和内存直接读写数据,这样就释放了主处理器。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。

特点:12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道

每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。

在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(请求1优先于请求2,依此类推) 。

独立数据源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包的过程。源和目标地址必须按数据传输宽度对齐。

支持循环的缓冲器管理

每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。

存储器和存储器间的传输

外设和存储器、存储器和外设之间的传输

闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标。

可编程的数据传输数目:最大为65535

配置:程序

相关文档
最新文档