嵌入式系统设计与开发期末考试复习

  • STM32学习笔记
    • 第一章:嵌入式系统概述
      • 1.嵌入式系统概念,应用与特点
      • 2.嵌入式系统的硬件(CPU,外设)
      • 3.主要嵌入式软件系统(应用及OS)
      • 4.嵌入式系统的发展趋势
    • 第二章:ARM Cortex-M3微处理器基础
      • 1.CM3微控制器简介
      • 2.CM3存储格式类型
      • 3.CM3处理器组件
      • 4.CM3指令系统
      • 5.CM3寄存器组织
      • 6.CM3存储映射与位带操作
      • 7.CM3异常与中断
      • 8.STM32F10系列的GPIO
    • 第三章:嵌入式开发环境
    • 第四章:STM-32平台开发基础
      • 使能时钟
      • 使能时钟例子
      • GPIO学习

STM32学习笔记

考试在即,在CSDN上借鉴了一些大佬的文章以及书本内容,整理成笔记

第一章:嵌入式系统概述

1.嵌入式系统概念,应用与特点

问:什么是嵌入式系统?有什么特点?应用在哪些领域?
嵌入式是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统
特点:(1)专用性强(2)嵌入性强(3)可剪裁性好(4)可靠性高(5)系统内核小(6)一般是实时系统(7)极其关注成本(8)有功耗约束
应用领域:工业制造,过程控制,通信,仪器,仪表,汽车,轮船,航空等领域
嵌入式系统由软件和硬件部分组成
(1)硬件:嵌入式处理CPU,输入输出设备
(2)软件:驱动程序DRV,操作系统OS,应用软件app

2.嵌入式系统的硬件(CPU,外设)

(1)嵌入式系统组成:嵌入式处理器,外设,操作系统,应用软件等。
(2)嵌入式处理器通常分为以下几类:
嵌入式微控制器(MCU)
嵌入式微处理器(EMPU)
嵌入式DSP处理器(EDSP)
嵌入式片上系统(SOC)
典型的嵌入式处理器:(1)ARM(2)MIPS(3)PowerPC(4)x86(5)Motorola68000
(3)外设的分类
外围设备按功能分为三种:存储设备,通信设备和显示设备

3.主要嵌入式软件系统(应用及OS)

嵌入式软件系统分为嵌入式操作系统和应用软件两大类,核心是嵌入式操作系统
(1)嵌入式操作系统
传统的经典RTOS,嵌入式Linux操作系统,Android系统,WindowsCE嵌入式操作系统,uc/OS-II实时操作系统
(2)嵌入式应用软件
嵌入式支撑软件,应用程序

4.嵌入式系统的发展趋势

(1)嵌入式开发是一项系统工程
(2)网络化,信息化的要求
(3)网络互联,移动互联成为必然趋势
(4)精简系统内核,算法,降低功耗和软硬件成本
(5)提供友好的多媒体人机交互界面

第二章:ARM Cortex-M3微处理器基础

1.CM3微控制器简介

CM3微控制器是一种嵌入式微控制器,支持两种工作模式:线程模式和处理模式,有两种工作状态:Thumb状态和调试状态

2.CM3存储格式类型

(1)大端格式:字数据中的高字节存储在低地址,而低字节存储在高地址
(2)小端格式:与大端模式相反

3.CM3处理器组件

CM3处理器系统的主要模块包括:
(1)处理器内核
(2)嵌套向量中断控制器NVIC
(3)总线矩阵
(4)存储器保护单元MPU
(5)系统调试组件和调度端口
(6)唤醒中断控制器WIC

内核结构(1)采用Thumb-2指令集架构的子集(2)采用哈佛处理器架构(3)采用三级流水线+分支预测
哈佛结构:一种将程序中指令和数据分开存储的存储器结构,是一种并行存储体系结构
普林顿结构:一种将程序指令存储器和数据存储器合并在一起的存储器结构
三级流水线:取指->解码->执行,无论处理器处于何种状态,PC总是指向“正在取值”指令的地址

4.CM3指令系统

(1)数据传送指令
(2)数据处理指令
(3)子程序调用和无条件跳转指令

5.CM3寄存器组织

CM3拥有R0-R15通用寄存器以及一些特殊功能寄存器
(1)通用寄存器
低寄存器:R0-R7,能够被指定通用寄存器的所有指令访问,复位后初始值不可预知
高寄存器:R8-R12,可以被指定通用寄存器的所有32位指令访问
堆栈寄存器SP:R13,作为SP自动与字对齐,对应两个不会被同时访问的寄存器SP_main和SP_process
链接寄存器LR:R14,执行分支指令时存储一个返回地址
程序计数器PC:R15,指向当前的程序地址
(2)特殊功能寄存器
状态寄存器
中断屏蔽寄存器
控制寄存器

6.CM3存储映射与位带操作

(1)存储器映射
ARM Cortex-M3只有一个单一固定的存储器映射,支持4GB存储空间
(2)位带操作
位带区和位带别名区的对应关系(计算)

7.CM3异常与中断

当正常的程序执行流程发生暂时的停止时,称之为异常,处理器允许多个异常同时发生,将按固定的优先级进行处理。
广义的异常包括内核异常和外部中断,内核异常是可预知的,对于内核来说是同步的,而外部中断是不可预知的,对于内核是异步的。
在STM32中,正常的程序执行流程发生暂时停止的情形,统称为异常,而由外部事件导致的程序执行流程改变的情形也可称为中断,因此,异常的概念包含了中断,或者说,中断是一种特殊的异常

8.STM32F10系列的GPIO

通用输入/输出口GPIO是一个灵活的由软件控制的数字信号,每个GPIO都代表一个连接到CPU特定引脚的一个位,GPIO端口的每一位都可以有多种模式:4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入,4种输出模式:开漏输出,推免式输出,推免式复用功能,开漏复用功能。

第三章:嵌入式开发环境

交叉编译,开发工具
交叉编译是指在某个平台上用交叉编译器编译出可在其他平台上运行的代码的过程

第四章:STM-32平台开发基础

重点
1.GPIO原理即程序设计,包括流水灯和八段数码管
2.按键原理与程序设计中断原理与中断程序设计
3.串口通信原理与程序设计
4.定时器与看门狗原理及程序设计

使能时钟

什么是时钟?
时钟就像一个小小的开关,需要用什么寄存器就得首先打开对应的开关,即使能对应的时钟:
为什么要使用时钟?
让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。如果不用的就完全关闭,尽可能降低芯片功耗
STM32时钟的分类:

  1. STM32通用寄存器
  2. Systick定时器 包含在Contex-M3内核里面,捆绑在NVIC中;

使能时钟例子

使能AFIO:RCC->APB2ENR|=1<<0;
使能PORTA时钟:RCC->APB2ENR|=1<<2;
使能PORTB时钟:RCC->APB2ENR|=1<<3;
使能PORTE时钟:RCC->APB2ENR|=1<<6;
I/O时钟属于APB2控制

GPIO学习

通用输入/输出口GPIO是一个灵活的由软件控制的数字信号,每个GPIO都代表一个连接到CPU特定引脚的一个位。
STM32 IO简介:STM32F103VBT6一共有五组输入输出端口(I/O口,简称IO),分别是GIPOA,GPIOB,GPIOC,GPIOD,GPIOE,每个IO口有16个IO,一共80个IO端口
GPIO端口的四种输入模式:浮空输入,上拉输入,下拉输入,模拟输入
四种输出模式:开漏输出,推免式输出,开漏复用功能,推免式复用功能
几个比较常用的配置:0x4表示模拟输入模式,0x3表示推免输出模式,0x8表示上拉/下拉输入模式,0xB表示复用输出。
STM32的每个I/O口都由7个寄存器控制:2个32位端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位复位寄存器BSRR;1个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;最常用的有4个:CRL/CRH/IDR/ODR;因此通常情况下只需要配置好以上四个寄存器就可以了。而CRH和CRL作用是完全一样的,只不过CRH控制的是高8位的IO而CRL控制的是低8位的
IDR是查看引脚电平状态用的寄存器,ODR是引脚电平输出的寄存器。
例如要设置PORTC的第11位为上拉输入,第12位为推免输出
示例代码:

GPIOC->CRH&=0XFFF00FFF;//11和12位,使用CRH,同时将这两位置0
GPIOC->CRH|=0X00038000;//PC11输入,PC12输出
GPIOC->ODR=1<<11;//PC11上拉

流水灯程序:

#include"stm32f10x_map.h"
//定义STM32寄存器
#define GPIOB_CRL((unsigned long int *)0x40010C00)
#define GPIOB_ODR((unsigned long int *)0x40010C0C)
#define GPIOB_CRH((unsigned long int *)0x40011804)
#define GPIOB_ODR((unsigned long int *)0x4001180C)
//以下用位带方式定义PE的第八个IO口
u32* PE08=(u32*)(0x42000000+(0x4001180C-0x40000000)*32+8*4)
int delay(int Time)
{//延时函数,通过循环空操作实现一定的时间延时unsigned short t,i,j;for(t=0;t<Time;t++)for(i=0;i<1000;i++)for(j=0;j<1000;j++);return 0;
}
void main()
{RCC->APB2ENR|=1<<0;//使能AFIO
RCC->APB2ENR|=1<<3;//使能PORTB时钟
RCC->APB2ENR|=1<<6;//使能PORTE时钟
AFIO->MAPR=0x02000000;
//初始化IO端口参数
*GPIOB_CRL&=0xFFFF0FFF;//将3位置0
*GPIOB_CRL&=0x00003000;//PB.3推免输出
*GPIO_ODR|=0x00000008;//PB.3输出高,8的二进制表示为1000,故第三位输出高
*GPIOE_CRH&=0x33333333;//PE.8-15推免输出
*GPIOE_ORD|=0x0000FF00;//PE.8-15输出高,一个十六进制的数可以表示为4位2进制数,因此FF所处的位置刚好在8-15位
delay(5);
while(1)
{*PE08=1;//LED1亮
delay(2);
*PE08=0;//LED1灭
delay(2);
*GPIOE_ODR=0X00000200;//LED2
delay(2);
*GPIOE_ODR=0X00000400;//LED3
delay(2);
*GPIOE_ODR=0X00000800;//LED4
delay(2);
*GPIOE_ODR=0X00001000;//LED5
delay(2);
*GPIOE_ODR=0X00002000;//LED6
delay(2);
*GPIOE_ODR=0X00004000;//LED7
delay(2);
*GPIOE_ODR=0X00008000;//LED8
delay(2);
}
}

嵌入式系统设计与开发期末考试复习相关推荐

  1. 成都信息工程学院oracle数据库应用开发期末考试复习,成都信息工程学院数据库题库单项选择与判断答案...

    能在查询分析器中设计查询 A B C D 277 以下哪项不是SQL Server导入导出时要选择传输的数据来源( D).(A) 从备份的数据库文件中 (B) 用一条查询指定要传输的数据 (C) 从源 ...

  2. 人工智能期末考试复习(贲可荣 张彦铎)

    人工智能期末考试复习(贲可荣 张彦铎) 人工智能的3个主流学派: 逻辑学派(符号主义方法):物理符号系统(即符号操作系统)假设和有限合理性原理 仿生学派(联结主义方法):神经网络及神经网络间的连接机制 ...

  3. 计算机文化基础期末考试复习

      计算机文化基础期末考试复习以下是咱们期末考试的复习题,希望大家认真学习: 一.选择题 1. 第一台计算机ENIAC淡生于1946年,是电子管计算机:第二代是晶体管计算机:第三代是中小规模集成电路: ...

  4. 人工智能导论丁世飞第三版期末考试复习大纲

    人工智能导论期末考试复习大纲 绪论 知识表示 确定性推理 搜索策略 机器学习 专家系统 进化计算 绪论 什么是智能?什么是人工智能? ➊ 智能是知识与智力的总和. ➋ 人工智能是研究开发用于模拟.延伸 ...

  5. Oracle期末考试 复习笔记

    Oracle期末考试 复习笔记 复习提纲 引言 本部分旨在为大家介绍数据库及大型数据库相关的概念,需要大家掌握云计算概念. 云计算的应用及分类.云数据库.关系型数据库的基本常识. Oracle 12c ...

  6. JAVA习题大全之java期末考试复习预测题一

    JAVA习题大全 目录 JAVA习题大全 java期末考试复习预测题A java期末考试复习预测题B java期末考试复习预测题C java期末考试复习预测题D java期末考试复习预测题E java ...

  7. 2018人工智能期末考试复习资料(一):学术篇

    机器之心知识委员会 机心通知函[2018]002号 2018 年人工智能专业期末考试复习资料:学术篇 各人工智能研究者.工程师.从业人: 2018 年是人工智能迅猛发展的一年,从技术研究到产业应用都取 ...

  8. 我们身边的知识产权单元测试答案(期末考试复习)【湘潭大学】

    我们身边的知识产权单元测试答案(期末考试复习)[湘潭大学] 第一章 第二章 第三章 第四章 第五章 第六章 第一章 我国历史上第一部以著作权为保护中心的法律是1910年清政府制定颁布的<大清著作 ...

  9. c语言期末考试复习题,C语言期末考试复习资料 计算机等级考试复习题目

    C语言期末考试复习资料 计算机等级考试复习题目 国二国三资料题目 1 C 语言复习题 @复刻回忆 新浪微博账号:http://doc.xuehai.net/panhe14 个人主页 http://do ...

最新文章

  1. Linux上chown命令的高级用法
  2. android apk签名工具_关于keytool和jarsigner工具签名的使用小结
  3. c/c++获取文件大小的方法
  4. weevely入手使用笔记
  5. 回首2018 | 分析型数据库AnalyticDB:不忘初心 砥砺前行...
  6. SqlServer的NEWID()函数巧用,生成GUID作为唯一标识用
  7. 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
  8. FastDFS部署及测试
  9. 【转】C++学习一 结构与结构体
  10. Unity2018新功能抢鲜 | C# Job System Ⅱ
  11. arraylist扩容是创建新数组吗 java_Java 基础数据结构分析
  12. C语言复习---获取矩阵的对角和
  13. Matlab中的逻辑运算:“any”,“all”
  14. 关于如何写代码和学习代码
  15. 塔科夫帧数测试软件,逃离塔科夫如何优化游戏FPS_画面优化设置详解_52pk
  16. 【python】py课上机作业3「谢尔宾斯基三角形」「递归输出列表」
  17. - 麦田守望者 -读后感
  18. PDF Expert for mac(最好用的pdf编辑工具)
  19. DirextX Training笔记
  20. 浪子回头,不是因你,而是他心已倦

热门文章

  1. GCC详解的-Wl选项说明
  2. Zphyr_Bluetooth
  3. 企业如何远程招聘到靠谱的程序员?--Codassium网页视频聊天工具
  4. html如何让窗口不在任务栏显示,电脑最小化窗口后无法在任务栏中显示怎么解决...
  5. 早安,娜娜。(全本完结)
  6. [论文学习]Mask R-CNN
  7. Linux 10GE端口,ES5D001VST00 2端口 万兆10GE SFP 华为 S5700交换机 光接口板
  8. eBPF 是用来干什么的?
  9. Wannafly挑战赛11 A B D【规律+逆元+字符串hash】
  10. OPENCV】seamless clone 功能比较