目录
第一章:嵌入式系统概述
嵌入式系统的定义:以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗和应用环境有严格要求的专用计算机系统。
嵌入式系统的特点:
- 常用于特定的任务
- 运行资源有限
- 及其关注成本
- 有功耗限制
- 对实时性有要求
- 运行环境差异较大
- 对可靠性要求较高
- 具有较长的生命周期
- 目标代码固化在非易失性存储芯片中
- 需要专用工具和方法来进行硬件设计
嵌入式系统的组成:
HAL:硬件抽象层hardware abstraction layer
① 嵌入式硬件平台:以嵌入式处理器为核心,包括存储器,输入输出接口,网络通信接口等。
②硬件抽象层(HAL):实现硬件与软件的隔离,使得软件不用直接与硬件打交道,提高了系统的可移植性。
③嵌入式系统软件:包括实时操作系统,嵌入式应用软件,嵌入式中间件(用来满足上层软件对运行环境的复用),嵌入式图形系统。
第二章:嵌入式系统基础知识
嵌入式硬件系统:
处理器的特点:①体积小
②支持实时多任务调度
③具有存储区域保护功能
④可扩展处理器结构
⑤较低的功耗
处理器的指令集:CISC:复杂指令集
RISC:精简指令集
处理器的存储结构:
冯·诺依曼结构:
-
存储程序:计算机可以将程序指令存储在内存中,计算机可以通过程序计数器(PC)按照指定的顺序执行指令。
-
存储器:计算机的存储器被分为内存和外存两个部分,内存用于存储程序和数据,外存用于长期储存数据。
-
控制器:计算机具有控制器,可以控制程序流程和数据流动。
-
运算器:计算机具有运算器,可以进行算术运算和逻辑运算。
-
二进制数值:计算机使用二进制数值来进行数据存储和处理,所有的数据都表示为二进制数值。
哈佛结构:
1. 存储器分离:哈佛结构将指令存储器和数据存储器分开,指令和数据采用不同的总线进行传输,可以在同一时间内同时进行指令和数据的存取操作,提高了系统的运行效率。
2. 并行传输:由于指令和数据分开传输,哈佛结构可以采用不同的总线并行传输,提高了传输效率。
3. 程序与数据分离:哈佛结构使得程序和数据分离存储,程序可以根据需要动态更改,不会影响数据的存储。
4. 存储器容量大:由于指令存储器和数据存储器各自独立,可以分别进行扩展,因此哈佛结构的存储器容量可以比冯·诺伊曼结构大得多。
5. 实时处理:由于指令和数据可以同时传输,因此哈佛结构适用于实时数据处理。
嵌入式微处理器的分类:Arm,MIPS,PowerPC
存储器:
常用存储器类型:
常用外部存储器:电子盘,CF卡,SD卡,MicroSD卡
嵌入式系统的开发流程和模式:
开发流程:
开发模式:
第三章:STM32系列微控制器
STM32F407XX的地址映射:将4GB的线性存储空间划分成8个区,每个区域的容量都是512MB,称为一个Block
几个主要的区:
1.代码区:包括flash,ccm,系统存储器和选项字节
2.片内SRAM区:用于存放临时数据的SRAM存储器
3.片内外设区(Peripheral):对该区域的地址读写就相当于对相应的外设进行操作
4.FSMC区:用来存放外部静态存储器的地址空间,它包括了访问外部SRAM、NOR Flash、NAND Flash等的地址范围。在使用FSMC时,需要在代码中配置相应的寄存器,使微控制器能够正确地访问外部存储器。
5.Cortex-M4核内外设区:指Cortex-M4架构在处理器核心包含的外设
STM32系列微控制器命名规则:
第四章:通用输入输出端口
STM32F407有7组GPIO端口:GPIOA~GPIOG,每组16个引脚,编号为0~15
GPIO常用的工作模式:
(1)输入模式:引脚输入电平通过TTL施密特触发器转换成0或1并放到数据寄存器中,又分为浮空输入,上拉输入,下拉输入,模拟输入
(2)输出模式:将0或1写入输出寄存器,在GPIO上对应高低电平,用分为开漏输出,开漏复用输出,推挽输出,推挽复用输出
(3)复用功能输入输出:将GPIO引脚控制权交给相应外设
(4)模拟模式:模拟输入与模拟输出,电压信号不做转换
[注]:GPIO作为中断源时,对应的GPIO端口必须配成输入模式啊
代码实例:
//GPIO初始化代码
static void MX_GPIO_Init (void)
{
GPIO_InitTypeDef GPIO_Initstruct = {0};/*GPIO Ports clock Enable */
_HAL_RCC_GPIOC_CLK_ENABLE();_HAL_RCC_GPIOF_CLK_ENABLE();_HAL_RCC_GPIOH_CLK_ENABLE ();
/*Configure GPIo pin output Level*/
HAL_GPIO_writePin(GPIOF,GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_SET);
/*Configure GPI0 pin output Level*/
HAL_GPIo_writePin(GPIOF,GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);
/*Configure GPIo pins */
GPIo_Initstruct.Pin = GPIo_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;GPIO_Initstruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIo_Initstruct.Pull = GPIO_NOPULL;
GPIo_Initstruct.Speed = GPIO_SPEED_FREQ_LON;HAL_GPIo_Init(GPIOF,&GPIO_Initstruct);
}
//实现LED闪烁
int main (void)
{
HAL_Init ();
systemclock_Config ( );
MX_GPIO_Init() ;
while (1)
{
HAL_GPIo_writePin (GPIOF,GPIO_PIN_6,GPIO_PIN_RESET);//点亮DS1
HAL_Delay (500) ;//延时500 ms
HAL_GPIO_writePin (GPIOF,GPIO_PIN_6,GPIO_PIN_SET);//熄灭DS1
HAL_Delay (500) ;
}
第五章:异常与中断处理
中断一般是指外设(片内外设和位带外设)产生的事件,Cortex-M3/M4的异常是由嵌套中断向量控制器(NVIC)统一进行管理的,NVIC最多支持256个中断向量入口,其中0~15是异常入口,偏移量16以上的均为外部中断源。
Cortex-M3/M4的系统地址映射:处理器会为总线上每一个可以访问的区域分配一段连续的物理地址,并且会对多个这样的区域按某种方式进行排列,从而形成整个可访问的地址空间,这种地址空间的排列方式称为系统的地址映射。
异常和中断的优先级数值越低,表示优先级越高。(具体看题目怎么要求)
NVIC有3个异常:分别是Reset,NMI,和Hard Fault,他们的优先级是固定的且都是负数,他们的优先级高于其他异常
剩余的中断优先级由NVIC中的IPR0~IPR20寄存器配置,每个IP[7:4]位又分为两部分:
组优先级(抢占优先级)
子优先级(响应优先级)
判断优先级的原则:
- 组优先级和子优先级,数值越小,优先级越高。
- 先判断组优先级,组优先级越高,则优先级越高。
- 组优先级相同,子优先级越高,优先级越高。
- 当组优先级和子优先级都相同时,那么中断向量表入口地址低的优先级高。
中断抢占(中断嵌套)遵循的规则:
- 组优先级高的会打断组优先级低的。
- 组优先级相同的,无论子优先级的大小关系怎样,都不能打断。
外部中断和事件: 指由EXIT配置的中断,EXIT的输出最终被映射到NVIC的相应通道,中断向量表中预留了外部中断向量存放的位置,EXIT控制器的每个中断都可以独立配置
中断的触发事件:1.上升沿 2.下降沿 3.双边沿触发
GPIO端口的中断处理函数:
(有个印象就行,不会考具体函数的写法)
代码实例:
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/*EXTI line interrupt detected*/
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin)!=RESET)
{
HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback (GPIO_Pin);//回调函数,写中断服务程序的操作
}
}
void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_3)/*判断是否是GPIo第3脚*/
{
if ( HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_6) == GPIO_PIN_SET)/*判断PF6引脚的状态*/
HAL_GPIO_writePin (GPTOF,GPIO_PIN_6,GPIO_PIN_RESET);
else
HAL_GPIO_writePin(GPIOF,GPIO_PIN_6,GPTO_PIN_SET);
}
}
第六章:定时器
系统定时器(SysTick):是NVIC的组成部分,对应的中断是15,SysTick是简单的24位倒计时器
通过4个控制寄存器来配置:
HAL库中的SysTick相关函数:
通用定时器:STM32F4 提供了多个功能强大的定时器,而且每个定时器相互独立,他们之间没有任何资源共享。
定时器的分类:
①通用定时器:包含输出比较模式,单脉冲模式,输入捕获模式
②高级定时器
③基本定时器
④低功耗定时器
⑤高分辨率定时器
通用定时器的特征:
通用定时器的时钟源模式:
1.内部时钟模式:将CK_INT作为时钟源,CK_INT是APBX总线上定时器的输入信号,数值为APBX时钟频率的两倍
CK_INT的最大频率:接APB1 84MHz;接APB2 168MHz
2.外部时钟模式1:时钟源来自触发输入的TRGI信号
3.外部时钟模式2:选用ETRF信号作为定时器时钟源
4.定时器级联:是指将主定时器(主模式定时器)设定为从定时器(从模式定时器)的预分频器,当一个定时器处于主模式时,就可以对另一个处于从模式定时器的计数器执行复位,启动,停止等操作
计数器的计数模式:
1.向上计数:计数器从0开始计数,每到来一个计数时钟信号就将计数值加一,当计数值和TIMx_ARR中的值相同时,计数器产生溢出(上溢),同时计数器从0开始计数,每次溢出都可以选择是否更新事件。
2.向下计数:计数器从TIMx_ARR开始计数,每到来一个计数时钟信号就将计数值减一,当计数值减到0时,计数器产生溢出(下溢),同时从TIMx_ARR重新加载初值,开始新一轮的计数。
3.中心对齐(向上/向下计数模式):计时器从0开始计数,每一个时钟信号加1,当计数值和TIMx_ARR中的值相等时,产生计数上溢,紧接着开始进行减1计数,直到计数值为0时产生计数下溢。
根据更新事件产生的时机又分为:
中心对齐模式1:下溢时产生更新事件
中心对齐模式2:上溢时产生更新事件
中心对齐模式3:上溢和下溢都产生更新事件
事件更新频率公式:
例如:(假定时钟源的频率是84MHz)
定时器的输出比较模式:在STM32F4微控制器中,定时器的输出比较模式用于控制输出波形或者指示给定的延时已经到期。输出比较模式会对定时器中计数器的计数值与捕获/比较寄存器的内容进行比较,当它们相同时,就可以进行以下操作。
(1)将输出比较模式和输出极性定义的值输出到对应的引脚上,输出引脚可以选择保持原有电平、改变为有效电平、改变为无效电平或进行电平翻转。
(2)设置状态寄存器中对应的标志位,若中断允许,则产生一次中断。
(3)若使能了相应的 DMA请求功能,则产生一次DMA请求。
定时器的PWM输出模式:PWM输出模式用于产生固定频率、固定占空比的输出信号。定时器的PWM输出模式有两种类型。
(1) PWM模式1。当计数单元采用向上计数模式时,若计数器的计数值小于捕获/比较寄存器的值,输出有效电平,否则输出无效电平;当计数单元采用向下计数模式时,若计数器的计数值小于捕获/比较寄存器的值,输出无效电平,否则输出有效电平。
(2) PWM模式2。当计数单元采用向上计数模式时,若计数器的计数值小于捕获/比较寄存器的值,输出无效电平,否则输出有效电平;当计数单元采用向下计数模式时,若计数器的计数值小于捕获/比较寄存器的值,输出有效电平,否则输出无效电平。
定时器的输入捕获模式:定时器的输入捕获模式用于捕获定时器各个通道上的输入信号。在输入捕获模式下,当检测到输入引脚上触发信号的边沿时,计数器的当前值将被锁存到捕获/比较寄存器中,并产生捕获事件。当捕获事件产生时,如果使能了中断或DMA,将产生捕获中断或DMA请求。
第七章:串行通信接口
串行通信:串行通信是指将多个比特位按序传输,适用于计算机与计算机,计算机与外设之间的远距离通信,串行通信所需的线路成本低且抗干扰能力强。
并行通信:并行通信是指将多个比特位同时通过并行线路传输,数据传输率比串行通信高,数据线之间容易相互干扰,布线成本高,不适合长距离传输。
串行通信根据数据的传输方向可分为:
①单工通信:发送端和接收端是固定的,数据流是单向的。
②半双工通信:数据可以在两个方向上传送,但是数据同一时刻只能衍一个方向传输。
③双工通信:在同一时刻,数据可以进行双向传输。
根据是否共享同一时钟信号可分为:
①同步串行通信:共享同一时钟信号。
②异步串行通信:没有同一时钟信号。
其数据帧格式:(1)起始位,0有效
(2)数据位,发送时低位在前,高位在后
(3)校验位,可选
(4)停止位,表示传送一帧数据结束
异步串行接口:
STM32F407中包含了6个USART控制器,其中USART模块包含三个部分:①波特率发生器 ②数据发送器 ③数据接收器
1.对USART通信来说:通信双方接收器和发送器的波特率应该相同,波特率可按照如下公式计算,其中PCLK:USART时钟频率、OVER8:采样系数、USARTDIV:无符号定点数,设置在USART_BRR寄存器中
第八章:模数转换器(数模转换器)
ADC是一种将模拟信号转换为离散值的数字信号的转换器,需要经过四个步骤:①取样 ②保持 ③量化 ④编码
根据输出量的含义,ADC分为:直接型ADC,间接性ADC (不重要)
ADC的主要性能指标:(1)取样时间(2)转换时间(3)采样率(4)分辨率(5)转换精度
ADC转换模式:
(1)单个通道单转换模式
(2)多个通道单次转换
(3)单个通道连续转换
(4)多个通道连续转换
ADC数据对齐:分为 左对齐,和右对齐