arm实验指导书.docx
《arm实验指导书.docx》由会员分享,可在线阅读,更多相关《arm实验指导书.docx(210页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统及应用实验指导书陈力平上海第二工业大学2014.8目录实验一、MDK入门操作1实验二、GPIO实验(1)15实验二、GPIO实验(2)24实验三、DMA实验38实验四 STM32中断系统实验47实验五、ADC实验(1)58实验五、ADC实验(2)70实验五、ADC实验(3)79实验六、DAC实验(1)88实验六、DAC实验(2)96实验七、定时器实验(1)106实验七、定时器实验(2)112实验七、定时器实验(3)121实验七、定时器实验(4)131实验七、定时器实验(5)144实验八、USART实验(1)155实验八、USART实验(2)171实验八、USART实验(3)177附录
2、1:STM32F107VR引脚定义表187附录2:GPIO初始化库函数分析195附录3:实验箱电路原理图202实验一、MDK入门操作一、 实验目的 1. 掌握MDK集成开发环境应用;2. 学会新建一个MDK工程;3. 学会组织和管理源文件;4. 学会配置MDK参数选项。二、 实验设备硬件:PC机,嵌入式ARM开发实训平台;软件:WindowsXP 操作系统,RealViewMDK (Keil Vision4) 集成 开发环境,STM32固件库函数等。三、 实验内容与操作步骤1. 创建一个MDK工程(1) 创建一个Demo文件夹 在Demo文件下,分别建立:a) 创建子文件夹User,用于存放源
3、程序;b) 创建子文件夹Project,KEIL工程文件;在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。图1 创建文件夹(2) 复制源代码到Demo文件夹a) 把Libraries文件夹整体复制到Demo文件夹下。这是ST的标准库,是以源代码形式提供的。提示:ST的固件库可以从ST官方网站免费下载( stm32f10x_stdperiph_lib.zip),Libraries文件夹通过解压固件库得到,本指导书中的实验所使用的标准库版本为3.1.2,随嵌入式ARM开发实训平台提供。 图2 复制库文件夹b) 复制演示程序到DemoUser文件夹。提示:演示程序由
4、指导教师提供。图3 复制演示代码文件(3) 新建一个Keil MDK工程a) 启动Keil uVision4,点击菜单 New uVision Project,新建一个工程,命名为new_project。图4 创建工程文件b) 选择CPU类型为 STM32F107VC (是ARM开发实训平台选用的CPU型号)。图5 选择芯片c) 当提示是否复制启动代码时,选择否。 提示:否表示用库中的启动代码,不用Keil软件自带的启动文件代码。d) 右单击Target1/执行Add Group.命令 ,功能是 添加Group ,添加后参照下图更改名称,目的便于代码管理。图 6 创建GROUP且更改名称提示:
5、User : 存放源代码;RVMDK : 存放启动代码文件(汇编语言);StdPeriph_Driver : 存放ST标准库函数文件;CMSIS : 存放CMSIS接口文件(属于库的一部分)。e) 在上述文件夹创建以后,依次添加文件。参照下图示进行添加: 在User文件夹下添加文件;文件路径:DemoLibrariesCMSISCoreCM3startuparm图 7 右单击菜单命令选项图 8 添加的文件 在RVMDK文件夹下添加文件 文件路径:DemoLibrariesCMSISCoreCM3startuparm。图9 选择汇编文件(*. s) 在stdPeriph_Driver文件夹下添加
6、文件 设备驱动函数文件路径:DemoLibrariesSTM32F10x_StdPeriph_Driversrc图10 选择设备文件 在CMSIS文件下夹添加文件CMSIS接口文件路径:DemoLibrariesCMSISCoreCM3图11 选择接口文件(4) 源代码程序(main.c 文件),应用程序示例。#include stm32f10x.h/* 为了使用编程书写方便,定义几个控制LED开关的宏 */#define LED1_ON( )GPIO_SetBits(GPIOD, GPIO_Pin_7); /* PD7 = 1 点亮LED1 */#define LED1_OFF( )GPIO
7、_ResetBits(GPIOD, GPIO_Pin_7);/* PD7 = 0 熄灭LED1 */#define LED2_ON()GPIO_SetBits(GPIOD, GPIO_Pin_13); /* PD13 = 1 点亮LED2 */#define LED2_OFF()GPIO_ResetBits(GPIOD, GPIO_Pin_13);/* PD13 = 0 点亮LED2 */#define LED3_ON()GPIO_SetBits(GPIOD, GPIO_Pin_3); /* PD3 = 1 点亮LED3 */#define LED3_OFF()GPIO_ResetBits(G
8、PIOD, GPIO_Pin_3);/* PD3 = 0 点亮LED3 */#define LED4_ON()GPIO_SetBits(GPIOD, GPIO_Pin_4); /* PD4 = 1 点亮LED4 */#define LED4_OFF()GPIO_ResetBits(GPIOD, GPIO_Pin_4);/* PD4 = 0 点亮LED4 */*延迟函数*/void Delay(_IO uint32_t nCount)/* _IO 就是volatile, 加上这个后可以避免延迟函数被编译器优化掉 */for(; nCount != 0; nCount-);/* 主函数 */int
9、 main(void)/*是ST库中的函数,函数实体在LibrariesCMSISCoreCM3system_stm32f10x.c配置内部Flash接口,初始化PLL,配置系统时钟的频率系统时钟缺省配置为72MHz */SystemInit();/*配置GPIO, 将连接LED1-4的GPIO设置为推挽输出 */GPIO_InitTypeDef GPIO_InitStructure;/* 定义1个结构体变量 */* 打开GPIOD 时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);/*初始化 */GPIO_InitStruct
10、ure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_13| GPIO_Pin_3 | GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/* 推挽输出模式 */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD, &GPIO_InitStructure);/* 调用库函数初始化GPIO */*while循环实现简单的跑马灯功能。*/while (1)LED1_ON();/* 点亮LED1 */ Delay(0xAFFFF);/*
11、 插入延时 */LED2_ON(); /* 点亮LED2 */Delay(0xAFFFF);LED3_ON(); /* 点亮LED3 */Delay(0xAFFFF);LED4_ON(); /* 点亮LED4 */LED1_OFF(); /* 关闭LED1 */ Delay(0xAFFFF); LED2_OFF(); /* 关闭LED2 */Delay(0xAFFFF);LED3_OFF();/* 关闭LED3 */Delay(0xAFFFF);LED4_OFF();/* 关闭LED4 */ (5) 配置工程, 右单击选“Options for ”按钮a) 切换到Output。单击,选择Obj
12、ect文件夹且选中Create Hex File 。 图12 配置Output页b) 切换到Listing。单击,选择Listings文件夹。图13 配置Listing页c) 切换到C/C+ 添加两个预编译宏 STM32F10X_CL, USE_STDPERIPH_DRIVER (ST库用到的两个宏) 修改Includes路径图14 配置C/C+页(1)(2)图15 配置路径d) 切换到Debug选择硬件调试器(缺省是软件仿真),选择Cortex-M/R J-LINK/J-Trace调试且选中 Run to main。图16 配置Debug 页e) 切换到Utilities 选择调试器类型,选
13、择Cortex-M/R J-LINK/J-Trace 点击settings按钮,添加Flash编程算法,选择STM32连接型器件,Flash容量256K字节图17 配置Utilities页f) 配置完毕后,单击或执行编译,编译后若存在错误,需要修改,直至OK。提示: (即命令Build target ),功能为编译并链接后生成提供给下载运行的二进制代码。 (即命令ReBuild all target files ),功能为重新编译所有的源文件并链接后生成提供给下载运行的二进制代码。 g) 按照图18连接J-Link,连接无误后打开电源。h) 单击,下载代码,然后按实验平台上的Reset按钮观察
14、实验现象。 十十十十PC的USB口实验平台的JTAG口图18 J-Link ARM JTAG仿真器连接图提示:实验过程中可以通过下表观察 J-Link ARM JTAG仿真器的现象四、 思考题1. 在教程中,有需要设置include选型,为什么要进行此项设置?如果不设置,程序能否编译通过?2. 能否自己动手,写一个不基于固件库的,直接操控寄存器的程序来实现LED流水灯。实验二、GPIO实验(1)一、 实验目的 1. 掌握MDK集成开发环境应用;2. 熟练掌握新建一个MDK工程与相关参数配置;3. 了解关于GPIO配置寄存器方法的应用;二、 实验设备硬件:PC机,嵌入式ARM开发实训平台,JLI
15、NK;软件:WindowsXP 操作系统,RealViewMDK (Keil Vision4) 集成开发环境,STM32固件库函数等。三、 部分实验电路图1 LED硬件连接四、 实验主要操作步骤(一)MDK配置1. 创建一个GPIO_1文件夹新建子文件夹User,存放源程序新建子文件夹RVMDK,存放启动代码新建子文件夹Project,存放自行创建的工程文件在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。(1)(2)图2 新建文件夹2. 新建Keil MDK工程启动Keil uVision4,点击菜单 New uVision Project,新建一个工程,命名
16、为GPIO_1,可以存放在Project文件夹下面。图3 新建工程选择CPU类型为 STM32F107VC (这是MDV-STM32-107开发板采用的CPU类型)图4 选择CPU类型当提示是否复制启动代码时,请选择否。(为了工程目录标准化,稍后添加Keil软件自带的旧版本启动文件)根据自己的需要修改Target名字。(名字任意)为了便于代码管理,在这个Project下创建几个Group (名字可以任意) User : 存放用户的源代码 RVMDK : 存放启动文件(汇编语言文件)创建好Group后,依次添加文件。 给User文件夹新建GPIO.c文件:图5 建立源代码文件(空文件)新文件内没
17、有任何代码,保存新文件到User目录下,命名为GPIO.c 给User文件夹添加刚刚新建好的GPIO.c,该文件在GPIO_1User下,点击Add即可添加后可看到GPIO.c文件在User目录下图6 添加文件后 给RVMDK文件夹添加启动文件,文件在keil_MDK软件安装目录下:KeilARMStartupST STM32F10x.s 文件,先把这个文件复制到GPIO_1工程目录下面的GPIO_1RVMDK 文件夹下,然后再把该文件添加到RVMDK 下,如下所示:图7 添加文件STM32F10x.s后添加时注意,应该把文件类型选择为所有,或者有*s的 扩展名的类型,否则看不到你所需要的文件
18、(STM32F10x.s)。 在main.c 文件中,输入源程序。GPIO即通用可编程输入输出,本实验采用的是通过直接配置寄存器进行GPIO编程,实现LED显示器的亮、暗控制。该 实验是最简单,也是一般最先开始的一个实验,它可以搭建一个最小的工程项目,之后可以扩展其他实验 , 从而节省了在搭建过程中所消耗的时间和精力。 但是需要提醒的是该方法没有脱离8051编程之模式。/*配置寄存器法 */#define GPIOD_CRL (*(unsigned int *)(0x) /0X40001 1400 #define GPIOD_CRH (*(unsigned int *)(0x) /基址+偏移量
19、#define GPIOD_ODR (*(unsigned int *)(0xC) /32位数据寄存器#define RCC_APB2ENR (*(unsigned int *)(0x) /外设时钟使能寄存器void Delay(void) unsigned int i; for (i=0;i0x9FFFF;i+); int main(void) / 开发板使用如下I/O口控制LED-PD3,PD4,PD7,PD13 RCC_APB2ENR |=(15); / 使能PORTD口的时钟 GPIOD_CRL &= 0x; / 配置寄存器,将GPIOD_CRL低16位都清0,这样CNF为00, GP
20、IOD_CRL |= 0x; / 配置寄存器,MODE选择为11,即50MHz输出模式 ,选择为推挽输出模式 GPIOD_CRH &= 0x; / 配置寄存器,将GPIOD_CRL高16位都清0,这样CNF为00, GPIOD_CRH |= 0x; / 配置寄存器,MODE选择为11,即50MHz输出模式 ,选择为推挽输出模式 while(1) GPIOD_ODR=0x2098; /LED对应位全亮Delay(); GPIOD_ODR=0x0000; /LED对应位全灭Delay(); 3. 配置工程, 点击“Options”按钮切换到Output选项卡。选择Object文件夹。图8 设置Ou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arm 实验 指导书
限制150内