《嵌入式原理和设计》实验讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式原理和设计》
实验讲义
实验一嵌入式系统开发环境实验 (1)
实验二cortex-M3常用汇编语言实验 (5)
实验三硬件开发实验一(LCDDemo) (10)
实验四硬件开发实验二(TIM1Demo) (11)
实验五硬件开发实验三(ADCDemo) (12)
实验六硬件开发实验四(USARTDemo) (14)
实验一嵌入式系统开发环境实验
一、实验目的或实验原理
1.熟悉RealView MDK集成开发环境和IAR集成开发环境的使用方法。
2.熟悉嵌入式系统软件设计方法和流程。
二、实验内容
1. 通过例程熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。
2. 建立自己的工程文件,在调试万利电子EK-STM3210B评估板上调试程序。
三、实验主要仪器设备及材料
PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B 评估板。
四、实验步骤
1. 打开电脑桌面“嵌入式”文件夹,点击实验1,出现如下两个文件夹:
STM32_LCD_DEMO_EW ARM、STM32_LCD_DEMO_RMDK分别为在IAR和MDK开发环境下的EK-STM3210B评估板LCD显示实验。
点击STM32_LCD_DEMO_RMDK文件夹,出现以下文件夹:
其中Library文件夹包含以下两个文件夹,分别对应固件库头文件和固件库源文件,“固件库”的概念在后面授课环节中会讲授。
其中project文件夹包含如下文件信息。
其中lcd.c、lcd.h、main.c都是本例子专属的程序:main.c是主程序,lcd.c是液晶屏的驱动程序,lcd.h是液晶屏的头文件;stm32f10x_conf.h 是配置评估板主控CM3芯片STM32F103外围模块的头文件,stm32f10x_it.c是中断处理函数的源文件,stm32f10x_it.h是中断处理函数的原型。
点击RVMDK文件夹,出现如下文件信息:
其中Project.Uv2是工程文件,采用MDK打开,注意打开选择程序如下图所示:
cortexm3_macro.s是CM3的指令封皮(Instruction wrappers),stm32f10x_vector.s是处理器启动代码(很重要)。
打开工程,按照keil的使用方法使用MDK,运行程序,得到调试效果。
使用MDK的注意事项:
⏹注意各文件的层级结构,建议遵循这样的文件结构。
⏹实验室MDK的版本为3.50版,如在自己电脑上安装,应按照
“嵌入式\EW ARM&RMDK使用\ ST-LINKII设置指南.PDF”说明来设置。
⏹MDK的具体使用细节可以参考教材20章、“电子版资料\教材电子版\STM32系列微控制器原理与实践电子书\第05章STM32系列微控制器开发工具与应用.pdf”中相应的说明、或参考《基于MDK的STM32处理器开发应用》和《ARM开发工具RealView MDK
使用入门》(作者均为武汉理工大学李宁)。
⏹个人使用经验,需特别注意下图中的Include Paths,为C程序的“Include”文件所在的路径,此设置很重要。
如工程按照实验的文件结构设置,不要随便修改。
3. 按上述使用MDK的步骤依次了解STM32_LCD_DEMO_EW ARM文件夹下的文件层次结构,\STM32_LCD_DEMO_EW ARM\project\EWARM下的LCDDemo.eww为IAR工程,双击可打开,运行程序,得到调试效果。
使用IAR的注意事项:
⏹IAR的使用环境与MDK不同,需用较多时间熟练。
⏹IAR的设置较MDK多,且复杂,需要多练习,设置可参考“电子版资料\教材电子版\STM32系列微控制器原理与实践电子书\第05章STM32系列微控制器开发工具与应用.pdf”和“嵌入式\EWARM&RMDK使用\ IAR EWARM快速入门万利电子版.pdf”和“嵌入式\EW ARM&RMDK使用\IAR EW ARM快速用户指南.pdf”
⏹IAR的具体使用细节可以参考《IAR EWARM V5嵌入式系统应用编程与开发》(作者徐爱钧)。
⏹个人使用经验,需特别注意下图中的Additional include directories,为C程序的“Include”文件所在的路径,此设置很重要。
如工程按照实验的文件结构设置,不要随便修改。
4. 根据2、3步骤,建立自己的工程项目,熟悉工程的建立、调试等步骤。
5. 学会使用Source Insight 3.5对复杂工程进行文本查找,编辑。
学会使用Beyond Compare 3对复杂工程进行文本的异同比对。
以上两个软件位于\嵌入式\相关软件。
实验二cortex-M3常用汇编语言实验
一、实验目的或实验原理
1.掌握RealView MDK集成开发环境和IAR集成开发环境的使用方法。
2.练习cortex-M3的常用汇编指令。
二、实验内容
1.熟悉位带操作。
2.熟悉常用的cortex-M3汇编指令。
三、实验主要仪器设备及材料
PC机、RealView MDK集成开发环境、IAR集成开发环境。
四、实验步骤
1. 打开电脑桌面嵌入式\实验2\project\RVMDK\ Project.Uv2。
2. 在stm32f10x_vector.s文件中输入汇编代码,选择如下模式,进入调试环境,观察程序运行的效果。
3.需要调试运行的功能包括:
特殊功能寄存器的访问
包括xPSR、PRIMASK、FAULTMASK、BASEPRI、CONTROL寄存器的访问
Ps:xPSR是状态寄存器,是读不出,写不进的。
⏹特权级的切换、双堆栈的切换
从特权级切换到用户级、从MSP切换到PSP
调试完成后,由指导教师记录操作分。
五、思考题
为什么本实验的程序指针PC的值从以下的“0x08000008”开始运行,而不是如51单片机从“0x00”开始运行。
可参考嵌入式\电子版资料\stm32手册\ stm32f103cn.pdf的存储器P19的视图。
;******************** (C) COPYRIGHT 2007 STMicroelectronics
********************
;* File Name : stm32f10x_vector.s 改编的汇编验证程序
;* Author : 朱敏杰
;* Version : V1.0
;* Date : 26/03/2010
;* Description :
Stack_Size EQU 0x00000400
;注意,此处定义了Stack的大小
AREA STACK, NOINIT, READWRITE, ALIGN=3
;定义栈,可初始为0,8字节对齐
Stack_Mem SPACE Stack_Size
;分配0x200个连续字节,并初始化为0 注意在memory窗口观察
__initial_sp
;汇编代码地址标号
PRESERVE8 ;指定当前文件堆栈8字节对齐
THUMB ;告诉汇编器下面是32为的Thumb指令,
;如果需要汇编器将插入位以保证对齐
AREA RESET, DA TA, READONL Y
;定义复位向量段,只读
EXPORT __Vectors ;定义一个可以在其他文件中使用的全局标
号。
此处表示中断地址
__Vectors
DCD __initial_sp ;给__initial_sp分配4字节32位的地址
DCD Reset_Handler ;给标号Reset Handler分配地址为08000008
;在这里要问问为什么
AREA |.text|, CODE, READONL Y ;代码段定义
Reset_Handler
EXPORT Reset_Handler
;CONTROL[0]=1
;此处可开始写入自己的汇编代码
;MOV R0,#1234
;MOV R0,R1
LDR R4,=0X22000008
MOV R6,#1
LDR R5,=0X22000004
MOV R1,#1
STR R1,[R4]
STR R6,[R5]
mov r1,#0
LDR R7,=0X22000008
LDR R1,[R7]
END
;此处结束自己的汇编代码
;请注意,此时为特权级线程模式,使用MSP ;特殊功能寄存器的读写
MOV R0,#0X00000001
MSR PRIMASK,R0
MOV R1,#0XFFFFFFFF
ADDS R0,R1
;MSR XPSR,R0
MOV R3,#0X00000004
MOV R3,#0X00000000
MSR XPSR,R3
;以上为自己调试的源代码
MOV R0,#55
MOV R1,#44
CMP R0,R1
CMP R0,#0X12
CMN R0,R1
CMN R0,#0X12
TST R0,R1
TST R0,#0X12
TEQ R0,R1
TEQ R0,#0X12
LABAL B LABAL
END
实验三硬件开发实验一(LCDDemo)
一、实验目的或实验原理
1.熟悉在IAR集成开发环境下对STM32的GPIO端口的控制。
2.理解在IAR集成开发环境下的LCD显示。
二、实验内容
1.练习对GPIO端口的配置及初始化。
2.练习驱动LCD显示。
三、实验主要仪器设备及材料
PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B
评估版。
四、实验步骤
1. 对照嵌入式\电子版资料\stm32手册\stm32f103cn.pdf文档查阅万利电子EK-STM3210B评估版主控芯片STM32F103的引脚表。
4. 分析main.C文件中的void Button_Config(void)、void Led_Config(void)、void Led_RW_ON(void)、void Led_RW_OFF(void)等程序,理解STM32下对GPIO端口的配置及初始化。
5. 分析stm32f10x_it.c代码中的中断服务程序。
特别是void EXTI3_IRQHandler(void)、void EXTI4_IRQHandler(void)、void TIM2_IRQHandler(void)。
在中断服务程序中设置断点,进行调试。
实验四硬件开发实验二(TIM1Demo)
一、实验目的或实验原理
1.熟练在IAR集成开发环境下对STM32的GPIO端口的控制。
2. 掌握在IAR集成开发环境下对STM32的定时器控制。
二、实验内容
1.练习配置和初始化定时器。
2.使用定时器产生两路不同占空比的PWM信号。
三、实验主要仪器设备及材料
PC机、双踪示波器、RealView MDK集成开发环境、IAR集成开发环境、万利电子
EK-STM3210B评估版。
四、实验步骤
1. 对照嵌入式\电子版资料\stm32手册\stm32f103cn.pdf文档查阅万利电子EK-STM3210B评估版主控芯片STM32F103的引脚表。
2. 运行实验4例程,在芯片的Pin67、Pin68、Pin69、Pin70引脚观察PWM波形,分
3.参考嵌入式\固件库\ 32位基于ARM 微控制器STM32F101xx 与STM32F103xx 固件函数库.pdf文档,重点为20章高级控制定时器(TIM1)部分,了解TIM1相关的固件库函数应用。
实验五硬件开发实验三(ADCDemo)
一、实验目的或实验原理
1.熟练掌握在IAR集成开发环境下对STM32的GPIO端口的控制。
2.掌握在IAR集成开发环境下对STM32的ADC模数转换器控制。
二、实验内容
1.配置和初始化ADC模数转换器。
2.将电位器输入的模拟信号转化为数字量。
三、实验主要仪器设备及材料
PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B 评估版。
四、实验步骤
3. main.c 中的宏“#define ADC1_DR_Address ((u32)0x4001244C)”对什么做了定义?
4. main.c 中的
“DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue”对什么作出了定义?
提示:
可参考嵌入式\电子版资料\stm32手册\STM32F10xxx_Reference_Manual_Chinese2.pdf有关DMA的章节和嵌入式\固件库\32位基于ARM 微控制器STM32F101xx 与
6.将main.c 中的“vu16 value = ADC_ConvertedValue;”屏蔽掉,打开
“vu16 value = ADC_GetConversionValue(ADC1);”句,观察实验结果,思考此句是如何得到AD转换结果的。
实验六硬件开发实验四(USARTDemo)
一、实验目的或实验原理
1.熟练掌握STM32串行通信接口的设置和初始化。
2. 熟练掌握在IAR集成开发环境下对STM32的同步异步通信。
二、实验内容
2.设置和初始化STM32的串行通信接口。
3.通过RS232练习STM32的主从通信。
三、实验主要仪器设备及材料
PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B 评估版。
四、实验步骤
1. 将万利电子EK-STM3210B评估版的UART0和UART1用串口线相连。
3. 将万利电子EK-STM3210B评估版的UART0用串口线和PC机箱后面板的DB9串
4.修改main.c的源代码,将串行通信协议改为波特率9600bps、8位数据位、两位停
5.修改main.c的源代码,使得UART0口不断地向外发出字符“3”,通过串口调试助手可以得到如下的现象。
串口调试助手位于\嵌入式\相关软件下,双击直接使用。
6. 完成步骤五后,思考如何不间断输出字符串“hello world!”。