嵌入式系统开发的实验基础
ADS软件组成
1.命令行开发工具 命令行开发工具在实际应用中相对来说比较广泛,使用它的好处在于可
以将许多编译命令写在一个脚本文件中,然后只执行该脚本文件就可以 让工具自动完成所有编译、链接工作生成可执行代码。命令行开发工具 中常用的命令如下。 (1)armcc armcc是ARM C编译器,用于将用ANSI C编写的程序编译成32位的ARM 指令代码。 armcc命令使用时可附带参数。在命令控制台环境下,输入以下命令:
件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式 映像文件)、Motorola 32-bit S-record format(Motorola 32位S格 式映像文件)、Intel Hex 32 format(Intel 32位格式映像文件)和 Verilog-like hex format(Verilog十六进制文件)。fromELF命令也能 够为输入映像文件产生文本信息,如代码和数据长度。 (3)armar ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一 起,用户可以把一个库传递给一个链接器以代替几个ELF文件。
嵌入式系统开发的实验基础
嵌入式系统开发的实验基础
ADS集成开发环境简介
ADS全称为ARM Developer Suite,是ARM公司推 出的新一代ARM集成开发工具。现在常用的ADS版 本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于无操作系统的ARM系统开发,是对裸机 (可理解成一个高级单片机)的开发。ADS有极佳 的测试环境和良好的侦错功能,它可使硬件开发者 更深入地从底层去理解ARM处理器的工作原理和操 作方法,为日后自行设计打基础,为BootLoader 的编写和调试打基础。
调试。用户可以在用C或汇编语言写的代码中进行单步调试,设置 断gt; armsd [options] [<imagefile> [<arguments>]]
嵌入式系统开发的实验基础
ADS软件组成
2.ARM运行时库 ADS提供两种运行时库来支持C和C++代码的编译,一种是ANSI C库函
嵌入式系统开发的实验基础
ADS软件组成
4.实用程序 ADS除了提供上述工具外,它还提供以下的实用工具来配合前面介绍的
命令行开发工具的使用。 (1)Flash downloader Flash downloader是用于把二进制映像文件下载到ARM开发板上的
Flash存储器的工具。 (2)fromELF fromELF是ARM映像文件转换工具。该命令将ELF格式的文件作为输入文
嵌入式系统开发的实验基础
ADS软件组成
(5)armasm armasm是ARM和Thumb的汇编器,它对用ARM汇编
语言和Thumb汇编语言写的源代码进行汇编。在命令 行输入
armasm–help
将会看到armasm汇编器的用法以及它的编译选项。 armasm的基本语法格式有两种:
目标文件和相关的一个或多个库文件进行链接,生成一个可执行 文件,也可以将多个目标文件部分链接成一个目标文件,以供进 一步地链接。ARM链接器生成的是ELF格式的可执行映像文件。 armlink的语法格式如下:
> armlink option-list input-file-list (7)armsd armsd是ARM和Thumb的符号调试器,它能够进行源码级的程序
> armasm [options] sourcefile objectfile > armasm [options] -o objectfile sourcefile
嵌入式系统开发的实验基础
ADS软件组成
(6)armlink armlink是ARM链接器,该命令既可以将编译得到的一个或多个
> armcc –help
将可以查看armcc的语法格式以及最常用的一些操作选项。 armcc的基本语法格式为
> armcc [options] file1 file2…filen
嵌入式系统开发的实验基础
ADS软件组成
(2)armcpp armcpp是ARM C++编译器,它将ISO C++或EC++
数,另一种是C++库函数。 ANSI C库函数包含在ISO C标准中定义的函数以及被C和C++编译器所调
用的支持函数。C++库函数包含由ISO C++标准定义的函数。 3.GUI开发环境 ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是
集成开发工具,而AXD是调试工具。 CodeWarrior for ARM是一套完整的集成开发工具,充分发挥了ARM
RISC的优势,使产品开发人员能够很好的应用尖端的片上系统技术。该 工具是专为基于ARM RISC的处理器而设计的,它可加速并简化嵌入式开 发过程中的每一个环节,使得开发人员只须通过一个集成软件开发环境 就能研制出ARM产品。 AXD(ARM eXtended Debugger)即ARM扩展调试器。调试器本身是 一个软件,用户通过这个软件使用调试代理可以对包含有调试信息的、 正在运行的可执行代码进行变量的查看、断点的控制等调试操作。
编译成32位的ARM指令代码。该编译器的命令选项和 armcc的选项基本一样,这里不再重复。 (3)tcc tcc是Thumb C编译器,它将ANSI C源代码编译成16 位的Thumb指令代码。tcc的编译选项和用法类似 armcc,具体使用请参考ADS软件的在线帮助文件。 (4)tcpp tcpp是Thumb C++编译器,它将ISO C++和EC++源 码编译成16位Thumb指令代码。它的编译选项和用法 类似armcc,具体使用请参考ADS软件的在线帮助文件。
华南理工大学 -- 嵌入式实验报告
简单地说,就是在一个平台上生成另一个平台上的可执行代码。通过交叉编译工具, 我们就可以在 CPU 能力很强、存储空间足够的主机平台上(比如 PC 上)编译出针对其 他平台的可执行程序。
六、主要代码注释
1、动态加载的内核模块的编程实现 Code:
/* helloModule.c */ #include <linux/init.h>//包含了宏_init,_exit 的定义,_init 告诉编译程序相关的函数和变量仅 用于初始化 #include <linux/module.h>//该文件包含了对模块的结构定义以及版本控制,任何模块程序都 应该包含此头文件 #include <linux/kernel.h>//包含常用的内核函数 MODULE_LICENSE("Dual BSD/GPL");//将模块的许可协议设置为 BSD 和 GPL 双许可. static int __init hello_init(void)//内核模块初始化函数 {
clean: rm -rf hello *.o
开发板 Makห้องสมุดไป่ตู้file 文件:
# test for makefile
#CC = arm-linux-gcc #CFLAGS =
all : hello
hello: hello.o arm-linux-gcc hello.o -o hello
hello.o: hello.c arm-linux-gcc -c hello.c -o hello.o
北航ARM9实验报告:实验3uCOS-II实验
北航ARM9实验报告:实验3uCOS-II实验北航 ARM9 实验报告:实验 3uCOSII 实验一、实验目的本次实验的主要目的是深入了解和掌握 uCOSII 实时操作系统在ARM9 平台上的移植和应用。
通过实际操作,熟悉 uCOSII 的任务管理、内存管理、中断处理等核心机制,提高对实时操作系统的理解和应用能力,为后续的嵌入式系统开发打下坚实的基础。
二、实验环境1、硬件环境:ARM9 开发板、PC 机。
2、软件环境:Keil MDK 集成开发环境、uCOSII 源代码。
三、实验原理uCOSII 是一个可裁剪、可剥夺型的多任务实时内核,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
其基本原理包括任务管理、任务调度、时间管理、内存管理和中断管理等。
任务管理:uCOSII 中的任务是一个独立的执行流,每个任务都有自己的堆栈空间和任务控制块(TCB)。
任务可以处于就绪、运行、等待、挂起等状态。
任务调度:采用基于优先级的抢占式调度算法,始终让优先级最高的就绪任务运行。
时间管理:通过系统时钟节拍来实现任务的延时和定时功能。
内存管理:提供了简单的内存分区管理和内存块管理机制。
中断管理:支持中断嵌套,在中断服务程序中可以进行任务切换。
四、实验步骤1、建立工程在 Keil MDK 中创建一个新的工程,选择对应的 ARM9 芯片型号,并配置相关的编译选项。
2、导入 uCOSII 源代码将 uCOSII 的源代码导入到工程中,并对相关的文件进行配置,如设置任务堆栈大小、系统时钟节拍频率等。
3、编写任务函数根据实验要求,编写多个任务函数,每个任务实现不同的功能。
4、创建任务在主函数中使用 uCOSII 提供的 API 函数创建任务,并设置任务的优先级。
5、启动操作系统调用 uCOSII 的启动函数,使操作系统开始运行,进行任务调度。
6、调试与测试通过单步调试、查看变量值和输出信息等方式,对系统的运行情况进行调试和测试,确保任务的执行符合预期。
ADS1.2
2. ARM C语言程序的基本规则 语言程序的基本规则 在ARM程序的开发中,需要大量读写硬件寄存器,并且尽 量缩短程序的执行时间的代码一般使用汇编语言来编写,比如 ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝 大多数代码可以使用C语言来完成。 C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入 了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬 件紧密相关。 在使用C语言时,要用到和汇编语言的混合编程。当汇编代 码较为简洁,则可使用直接内嵌汇编的方法,否则,使用将汇编 文件以文件的形式加入项目当中,通过ATPCS的规定与C程序相 互调用与访问。 ATPCS,就是ARM、Thumb的过程调用标准 (ARM/Thumb Procedure Call Standard),它规定了一些子程 序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则, 参数的传递规则等。
图2-1-10
8. 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空 的项目文件作为模板保存起来。首先,要将该项目工程文件改一个 合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安 装的目录下的Stationary 目录下新建一个合适的模板目录名,如, S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。这样,就能在图2-1-10中 看到该模板。 9.新建项目工程后,就可以执行菜单 Project|Add Files把和工程 所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须 通过 Project|Create Group 来创建文件夹,然后把加入的文件选中, 移入文件夹。或者鼠标放在文件填加区,右键点击,即出!如图21-11
实验七 SOPC 基础实验
实验七SOPC 基础实验SOPC即System-On-a-Programmable-Chip(可编程片上系统),本章通过一系列的实验,使学习者对SOPC的应用有较为深刻的认识,并对FPGA的仿真与设计环境有深入的了解,为进一步的工作奠定基础。
7.1 SOPC概述SOPC是PLD和ASIC技术融合的结果,它是一种特殊的嵌入式系统。
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
由于FPGA无论在逻辑门密度还是在运行频率等诸多方面都取得了长足进步,基于FPGA的嵌入式系统成为SOPC的热点。
目前已经可以把处理器软核、ASIC硬核、数字信号处理器件以及网络控制等各种数字逻辑控制器以IP核的形式集成到FPGA芯片里,构成嵌入式系统。
7.2 基本硬件设计实验嵌入式开发环境EDK是用于设计嵌入式处理系统的集成软件,是利用嵌入式PowerPC™硬处理器核和/或Xilinx MicroBlaze™软处理器核进行Xilinx平台FPGA设计时所需的全部技术文档和IP。
EDK包括硬件部分和软件部分:1. 硬件部分:Xilinx Platform Studio (XPS)XPS是设计嵌入式处理器系统硬件部分的开发环境和用户图形界面。
可使用底层系统生成器BSB(Base System Builder )创建XPS工程,BSB能够快速和有效地创建工程设计。
Xilinx推荐使用BSB向导来创建任何新的嵌入式设计工程,BSB能够满足你所有设计的需要,并且可以帮助你节省很多时间。
使用BSB创建XPS的过程如下:创建顶层工程文件(*.xmp File)选择板型选择和配置处理器选择和配置多重I/O口添加内部的外围设备设置软件观看系统摘要页2. 软件部分:Software Development Kit (SDK)SDK是综合的开发环境,是对XPS的补充,可用C/C++进行嵌入式软件应用的编写和验证。
嵌入式系统实验IO接口
可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。
它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在
用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实 现一种文件系统、一个驱动程序或其他内核上层的功能。
static int led_release(struct inode *inode,struct file *file) {
3
之类的函数来读写 IO 端口;后一种 MMIO 是先把 IO 端口映射到 IO 内存(“内 存空间”),再使用访问 IO 内存的函数来访问 IO 端口。
对于 RISC 处理器(如 ARM、PowerPC 等),通常只实现一个物理地址空间, 外设 I/O 端口成为内存的一部分。此时,CPU 可以像访问一个内存单元那样访问 外设 I/O 端口, 而不需要设立专门的外设 I/O 指令。这两者在硬件实现上的差 异对于软件来说是完全透明的, 驱动程序开发人员可以将存储器映射方式的 I/O 端口和外设内存统一看作是“I/O 内存” 资源。
0100 = CF_DMARQ
2
0101 = TS_DATA
0110~1110 = Reserved
1111 = GPJ0_INT[3] 本次实验中,主要用到了 Output 功能,而对其他功能没有涉及,所以在端 口功能设置的时候,主要考虑这一点。GPJ0DAT 寄存器用于 GPJ0 口的数据操 作,一共有 8 位,端口配置为输入时, 从寄存器读入值对应位反映引脚电平状 态; 端口配置为输出时, 写出位产生对应引脚电平;端口配置为功能引脚时, 寄 存 器值不确 定,实 验中, 主要使用 其输出 功能。 GPJ0PUD、 GPJ0DRV 、 GPJ0CONPDN、GPJ0PUDPDN 功能不涉及,这里不做过多的介绍。 3) IO 端口地址映射 在介绍 IO 端口地址映射时,有必要介绍一下地址空间的概念。 物理地址:CPU 地址总线传来的地址,由硬件电路控制其具体含义。物理 地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS 等)。在程序指令中的虚拟地址经过段映射和页面映射后,就 生成了物理地址,这个物理地址被放到 CPU 的地址线上。 物理地址空间,一部分给物理 RAM(内存)用,一部分给总线用,这是 由硬件设计来决定的,因此在 32 bits 地址线的 x86 处理器中,物理地址空间是 2 的 32 次方,即 4GB,但物理 RAM 一般不能上到 4GB,因为还有一部分要给 总线用(总线上还挂着别的许多设备)。在 PC 机中,一般是把低端物理地址给 RAM 用,高端物理地址给总线用。 总线地址:总线的地址线或在地址周期上产生的信号。外设使用的是总线 地址,CPU 使用的是物理地址。物理地址与总线地址之间的关系由系统的设计 决定的。在 x86 平台上,物理地址就是总线地址,这是因为它们共享相同的地 址空间。因为物理地址和总线地址相同,所以凭眼睛看是不能确定这个地址是 用在哪儿的,它或者在内存中,或者是某个卡上的存储单元, 甚至可能这个 地址上没有对应的存储器。 虚 拟 地 址 : 现 代 操 作 系 统 普 遍 采 用 虚 拟 内 存 管 理 ( Virtual Memory Management)机制,这需要 MMU(Memory Management Unit)的支持。MMU 通常是 CPU 的一部分,如果处理器没有 MMU,或者有 MMU 但没有启用,CPU 执行单元发出的内存地址将直接传到芯片引脚上,被 内存芯片(物理内存) 接收,这称为物理地址(Physical Address),如果处理器启用了 MMU,CPU 执 行单元发出的内存地址将被 MMU 截获,从 CPU 到 MMU 的地址称为虚拟地 址(Virtual Address),而 MMU 将这个地址翻译成另一个地址发到 CPU 芯片的 外部地址引脚上,也就是将虚拟地址映射成物理地址。 Linux 中,进程的 4GB(虚拟)内存分为用户空间、内核空间。用户空间 分布为 0~3GB(即 PAGE_OFFSET,在 0X86 中它等于 0xC0000000),剩下的 1G 为内核空间。程序员只能使用虚拟地址。系统中每个进程有各自的私有用 户空间(0~3G),这个空间对系统中的其他进程是不可见的。 CPU 发出取指令请求时的地址是当前上下文的虚拟地址,MMU 再从页表 中找到这个虚拟地址的物理地址,完成取指。同样读取数据的也是虚拟地址, 比如 mov ax, var. 编译时 var 就是一个虚拟地址,也是通过 MMU 从也表中来 找到物理地址,再产生总线时序,完成取数据的。 访问 IO 端口有 2 种途径:I/O 映射方式(I/O-mapped)、内存映射方式 (Memory-mapped)。前一种途径不映射到内存空间,直接使用 intb()/outb()
嵌入式系统原理与应用实验指导书(合稿+习题)
嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。
第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。
采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。
MagicARM2410实验箱参考如图1.1所示。
图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。
图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
《嵌入式系统》课程实验报告-stm32单片机gpio程序开发
实验概述
【实验目的及要求】 实验目的: 1. 掌握 STM32 单片机输入输出接口程序开发 2. 掌握用寄存器开发 STM32 单片机程序 3. 掌握用库函数开发 STM32 单片机程序 实验要求: 1. 完成实验要求中提到要完成的所有内容,完成代码并提交主要代码。 2. 分析寄存器和库函数编程的优势和劣势,你喜欢用哪种方式。 3. 对每行主要代码要进行注释,说明其功能。 实验内容:
1.熟悉 TEB-CM5000 嵌入式单片机实验系统上的 LED 灯电路和单独按钮电路。
2.学习并掌握寄存器版本、库函数版本相关的实例程序,主要学习实例 stm32referencesrcforch5 目录下的,LED、LEDLib、KEY_LED 和 KEY_LEDlib 四 个程序。
3.利用寄存器位操作模式、库函数分别开发出 USER2(PD3)按钮控制 LD5(PF7)亮灭。具体功能:USER2(PD3)按钮按下时,LD5 灯闪烁;当 USER2(PD3) 按钮弹开时,LD5 灯停止闪烁。 4.实现利用寄存器位操作模式、库函数分别开发出: 当每次 USER2(PD3)按钮 按下时,LD5 灯只闪烁一次。 【实验环境】 1. TEB-CM5000 嵌入式单片机实验系统 2. MDK4.12 嵌入式软件开发环境
2.当每次 USER2(PD3)按钮按下时,LD5 灯只闪烁一次。
(1)寄存器位操作模式 循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)
(3) 库函数
循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)
小结
1. 只闪烁一次跟一直闪烁的区别主要在于 Flag 值。 在只闪烁一次的程序中, 设置 flag 值作为标志,灯亮以后改变 flag 值的状态,flag 的状态改变灯的 状态就不再继续。
嵌入式linux实验报告
嵌入式操作系统Linux实验报告专业:计算机科学与技术班级:13419011学号:1341901124姓名:武易组员:朱清宇实验一Linux下进程的创建一实验目的1.掌握Linux下进程的创建及退出操作2.了解fork、execl、wait、waitpid及之间的关系二实验内容创建进程,利用fork函数创建子进程,使其调用execl函数,退出进程后调用wait或waitpid清理进程。
三实验过程1.进程的创建许多进程可以并发的运行同一程序,这些进程共享内存中程序正文的单一副本,但每个进程有自己的单独的数据和堆栈区。
一个进程可以在任何时刻可以执行新的程序,并且在它的生命周期中可以运行几个程序;又如,只要用户输入一条命令,shell进程就创建一个新进程。
fork函数用于在进程中创建一个新进程,新进程是子进程。
原型如下:#include<sys/types.h> /* 提供类型pid_t的定义 */#include<unistd.h> /* 提供函数的定义 */pid_t fork(void);使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间fork系统调用为父子进程返回不同的值,fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:在父进程中,fork返回新创建子进程的进程ID;✓在子进程中,fork返回0;✓如果出现错误,fork返回一个负值;用fork创建子进程后执行的是和父进程相同的程序,子进程可以通过调用exec函数以执行另一个程序。
当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程(例如其m a i n函数)开始执行。
调用e x e c并不创建新进程,进程I D并未改变,只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
e x e c函数原型execl,execlp,execle,execv,execve和execvp2.进程的退出一个进程正常终止有三种方式:由main()函数返回;调用exit()函数;调用_exit()或_Exit()函数。
实验一嵌入式系统网络安全基础
实验一、嵌入式系统网络安全基础1.traceroute:可以使用traceroute命令显示数据包到达目的主机所经过的路由。
2.curl & wget: 使用curl或wget命令,不用离开终端就可以下载文件。
如你用curl,键入curl -O后面跟一个文件路径。
wget则不需要任何选项。
下载的文件在当前目录。
stat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态(InterfaceStatistics),masquerade 连接,多播成员(Multicast Memberships) 等等。
常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到3.1列出所有端口netstat –a.3.2列出所有tcp 端口netstat –at3.3 只显示监听端口netstat –l3.4显示TCP 或UDP 端口的统计信息netstat -st 或–su3.5 netstat -p 可以与其它开关一起使用,就可以添加“PID/进程名称” 到netstat 输出中,这样debugging 的时候可以很方便的发现特定端口运行的程序。
3.6 找出程序运行的端口并不是所有的进程都能找到,没有权限的会不显示,使用root 权限查看所有的信息。
3.7显示网络接口列表3.8 IP和TCP分析查看连接某服务端口最多的的IP地址4.Whois信息下载最新版wget https:///pub/blfs/conglomeration/whois/whois_5.2.18.tar.xz #xz -d whois_5.2.18.tar.xz#tar xvf whois_5.2.18.tar# cd whois-5.2.18/#make#make install注意在linux命令终端里查询一个域名的注册信息时,要把前面的www去掉。
嵌入式系统(STM32微处理器)实训指导书
嵌入式系统(STM32微控制器)实训指导书意法半导体公司的STM32微控制器具有32位字长的CPU,使用精简指令系统(RISC)。
精简指令系统的指令字长固定,译码方便,相对于复杂指令系统(CISC),精简指令系统的处理效率更高。
具有32位字长CPU的STM32系列微控制器的处理能力远高于8位和16位单片机,同时集成了与32位CPU相适应的强大外设(如双通道ADC、多功能定时器、7通道DMA、SPI等),能够完成过去一般单片机所无法达到控制功能。
现在,已经形成了以8位单片机为主流的低端产品和以32位微控制器为主流的高端产品两大市场。
对于自动化领域的从业人员,了解32位微控制器的结构、特点,掌握其使用方法,是很有必要的。
一、关于学习方法此前,我们已经学习过《C语言程序设计》、《微机原理》、《单片机原理及应用》等相关课程。
这些课程的学习是系统的、完整的、全面的,是有老师讲授的。
这种学习方法,适合在学校学习一些重要的基础理论课程。
在工作中,我们常常会遇到新的东西,需要以已有的知识作为基础,去解决问题、完成任务。
这就需要不同于前述的另一种学习方法。
这种方法是建立在自学基础上的,以解决实际问题为目的,允许通过局部的、模仿性的手段,来实现既定目标。
这种方法在工程实践中的应用是非常普遍的。
“白猫黑猫,能抓住老鼠就是好猫”。
能解决问题的方法就是好方法。
本次实训采取的方法是:将参考资料发给同学,同学自学其中需要的部分。
在指导教师引导下,体验各个控制项目、理解各组成部分,再以原控制软件为基础进行修改和移植,获得要达到的控制效果。
在本次实训中,我们使用的微控制器型号为STM32F103RB。
STM32F103RB是STM32微控制器系列中的一种,内部具有128KB程序存储器、20KB随机读写存储器、1个16位高级定时器、3个16位通用定时器、2个SPI、2个I2C、3个USART、1个USB、1个CAN、2个ADC。
芯片为64引脚LQFP封装,有51个I/O引脚。
