嵌入式课程设计报告
- 格式:docx
- 大小:19.18 KB
- 文档页数:10
目录前言 (2)一、U-Boot分析 (3)1、引导程序U-Boot第一阶段分析 (3)2、引导过程 (4)3、程序流程图 (8)二、程序设计 (8)三、心得体会 (9)前言ARM嵌入式处理器已被广泛应用于消费电子厂品、无线通信、网络通信和工业控制等领域。
在嵌入式操作系统中,Linux、Vxworks、WinCE三足鼎立,其中Linux由于其开源性、稳定性、安全性、可裁剪性更是一支独秀。
在嵌入式系统中,如何实现在ARM平台下Linux操作系统的引导工作是嵌入式技术开发的重要环节。
BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader 来完成。
比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
一、U-Boot分析嵌入式Linux系统中常用的Bootloader引导程序有U-Boot,redboot, blob 和vivii等,其中U-Boot遵循GPL条款的开放源码项目,功能最为强大,U-Boot 对PowerPC系列处理器支持最丰富,同时还支持MIPS,x86,ARM,XScale等诸多常用系列的处理器;U-Boot引导程序分为Stage1和Stage2量大部分,Stage1中主要包括设备初始化、中断设置、时间设置和储存器初始化等工作,并且采用汇编语言实现,而一些通用功能大多采用C语言实现,放在Stage2中。
1、引导程序U-Boot第一阶段分析Stage1的代码在CPU/arm920t/start.s中定义,它包括从系统上电后在0x00000000地址开始执行的部分。
嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,激发学生的学习兴趣和主动性。
具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。
一、实训目的通过本次嵌入式课程设计实训,使学生掌握嵌入式系统设计的基本原理和方法,提高学生的实际操作能力和创新意识,培养学生的团队协作精神。
同时,通过实训,使学生熟悉嵌入式系统的硬件平台、软件开发环境,掌握嵌入式编程语言,了解嵌入式系统的调试和测试方法。
二、实训内容本次实训以设计一个简单的温室环境监测系统为例,主要包括以下几个方面:1. 系统需求分析温室环境监测系统主要实现对温室内部光照、温度、湿度的实时监测,并根据监测结果自动调节环境参数,确保温室内的作物生长环境稳定。
系统需具备以下功能:(1)实时监测光照、温度、湿度等环境参数;(2)根据预设阈值,自动调节环境参数;(3)通过LCD显示屏实时显示监测数据;(4)通过串口通信将数据传输至上位机;(5)具有按键控制功能,如开关报警、手动调节等。
2. 硬件平台设计本次实训采用STM32系列微控制器作为核心控制单元,结合DS18B20数字温度传感器、DHT11数字湿温度传感器、光敏电阻、LCD显示屏、蜂鸣器、按键等外围设备,构建温室环境监测系统硬件平台。
3. 软件设计(1)系统初始化:初始化微控制器,配置相关外设参数,设置中断优先级等。
(2)数据采集:通过ADC读取光敏电阻的模拟值,计算光照强度;通过DS18B20和DHT11传感器读取温度和湿度数据。
(3)数据处理:对采集到的数据进行处理,如温度、湿度阈值判断,光照强度阈值判断等。
(4)环境参数调节:根据预设阈值,自动调节加热装置、风扇等设备,以实现环境参数的自动调节。
(5)数据显示:通过LCD显示屏实时显示光照、温度、湿度等数据。
(6)串口通信:通过串口将数据传输至上位机。
(7)按键控制:实现报警功能、手动调节等功能。
4. 系统调试与测试在系统开发过程中,对硬件平台和软件进行调试和测试,确保系统稳定运行。
主要测试内容包括:(1)硬件测试:检查各外设是否正常工作,如传感器、显示屏、按键等。
(2)软件测试:测试系统功能是否满足需求,如数据采集、处理、显示、通信等。
嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的:1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O 控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C 语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PROTEUS 仿真调试的方法;二、具体任务:1.采用PROTEUS 完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利浦公司的LPC2106,东西南北方向分别设置红黄绿3个指示灯,东西方向和南北方向各用1个数码管显示通行时间;2.用ADS1.2编写C 语言应用程序,完成十字路口交通灯控制;3.采用PROTEUS 将应用程序装载在LPC2106中,进行仿真验证。
要求东西方向和南北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是9秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
三、硬件电路设计。
(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)附图:硬件电路说明:左边是LPC2106,中间由上下两个LED数码管连接在总线上组成,右边由12个LED灯模拟十字路口。
LPC2106的P0.0~P0.9分别输出接数码管的a,b,c,d,e,f,g以及两个位选位;P0.10~P0.15输出分别接南北和东西方向的LED。
四、源程序。
(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)源程序:#include "config.h"#define unchar unsigned charchar LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9数码段码表void delay(uint32 n){ //定义延时函数while(n--);}int main(void){ int32 i,g,s;PINSEL0=0x00000000; //把I/O口都选用第一功能PINSEL1=0x00000000;IODIR=0x0000ffff; //P0.0~P0.15设置为输出引脚while(1){int8 n=30; //定义变量n,用于数码管显示延时for(i=31;i>20;i--) //for循环用于设定东西方向绿灯时间为10秒{g=i%10; //分离出个位、十位s=i/10;while(n--) //while函数动态扫描的数码管显示延时{IOSET=0x00008400|0x00000200|LED[g];//南北亮红灯,东西亮绿灯,数码管个位显示数字delay(2000); //调用延时函数IOCLR=~0x00008400; //数码管显示清零,灯保持亮的状态IOSET=0x00008400|0x00000100|LED[s];//南北亮红灯,东西亮绿灯,数码管十位显示数字delay(2000); //调用延时函数IOCLR=~0x00008400; //数码管显示清零,灯保持亮的状态}}for(i=20;i>15;i--) //for循环用于设定东西方向黄灯灯时间为5秒{g=i%10; //分离出个位、十位s=i/10;while(n--){IOCLR=0x00008400; //显示清零,等待下一状态显示IOSET=0x00004400|0x00000200|LED[g];//南北亮红灯,东西亮黄灯,数码管个位显示数字delay(1000); //延时程序IOCLR=0x00004000|0x000003ff; //熄灭黄灯、清零数码管显示IOSET=0x00004400|0x00000100|LED[s];//南北亮红灯,东西亮黄灯,数码管十位显示数字delay(1000); //延时程序IOCLR=0x00004000|0x000003ff; //熄灭黄灯、清零数码管显示}delay(300000); //黄灯和数码管闪烁延时时间}for(i=15;i>5;i--){g=i%10;s=i/10;while(n--){IOSET=0x00003000|0x00000200|LED[g];//南北亮绿灯,东西亮红灯,数码管个位显示数字delay(2000); //延时程序IOCLR=~0x00003000; //数码管显示清零,灯保持亮的状态IOSET=0x00003000|0x00000100|LED[s];//南北亮绿灯,东西亮红灯,数码管十位显示数字delay(2000);IOCLR=~0x00003000; //数码管显示清零,灯保持亮的状态}}for(i=5;i>0;i--){g=i%10;s=i/10;while(n--){IOCLR=0x00003000; //显示清零,等待下一状态显示IOSET=0x00002800|0x00000200|LED[g];//南北亮黄灯,东西亮红灯,数码管个位显示数字delay(1000);IOCLR=0x00000800|0x000003FF; //熄灭黄灯、清零数码管显示IOSET=0x00002800|0x00000100|LED[s];//南北亮黄灯,东西亮红灯,数码管十位显示数字delay(1000);IOCLR=0x00000800|0x000003FF; //熄灭黄灯、清零数码管显示}delay(300000); //黄灯和数码管闪烁延时时间}}}五、仿真效果。
课程名称:嵌入式系统课程设计先修课程:操作系统、C语言程序设计一、目的与任务《嵌入式系统课程设计》是计算机学生的专业实践课程,是学习《嵌入式系统及设计》课程后必要的实践教学环节。
课程设计是检验学生是否掌握相关专业课程知识的重要手段,以学生为主体,充分调动学生的积极性和创造性,重视学生实际动手能力的培养。
通过本课程设计使学生加深理解、巩固课堂教学和平时实验内容,使学生初步具备linux应用开发的系统分析、系统设计、系统实现与测试的实际能力,强化学生的知识实践意识、提高动手能力,发挥学生的想象力和创新能力,从而培养工程应用型人才。
二、教学基本要求1、学习态度:要有勤于思考、刻苦钻研的学习精神和严肃认真、一丝不苟、有错必改、精益求精的工作态度,积极查阅整理分析相关参考文献,精心设计、认真编码、确保质量。
对弄虚作假者,课程设计成绩一律按不及格记,并根据学校有关规定给予处理。
2、学习纪律:要严格遵守学习纪律,遵守作息时间,不得迟到、早退和旷课。
特殊情况不能上课者,必须请假,凡未请假或未获准假擅自不上课者,均按旷课论处。
3、课程目标:掌握linux应用开发的基本理论知识和基本方法技能,概念清楚准确,系统分析、系统设计、系统实现、系统测试符合软件工程相关规范,结构合理,程序运行良好,课程设计报告撰写规范,答辩中回答问题正确。
4、课程设计报告:按照《东华理工大学长江学院课程设计报告规范》和《嵌入式系统课程设计》任务书的要求,认真设计、撰写好课程设计报告,总结课程设计的收获和心得体会,及时提交电子和纸质材料。
三、课程设计内容(一)主要设计内容1、系统分析、总体设计、概要设计、详细设计、系统实现和测试。
2、系统运行与维护。
3、撰写课程设计报告。
4、课程设计答辩:课题的论述和回答问题。
(二)参考选题1.系统移植类:(1)嵌入式WinCE移植(2)嵌入式Linux2.6内核的移植(3)嵌入式Web服务器BOA在开发板上的移植(4)使用BusyBox构建的根文件系统的移植(5)嵌入式QT的移植(6)嵌入式引导程序UBoot的移植2. QT编程类:(1)基于QT的手机通讯录管理(2)基于QT的手机日历程序(3)基于QT的手机计算器程序(4)基于QT的手机秒表程序(5)基于QT的电子词典程序(6)基于QT的电子相框程序3. 驱动编程类:(1)Led跑马灯程序(2)按键驱动程序(3)嵌入式类Minicom串口程序4. 其它类:可选择其它自己感兴趣的与嵌入式相关题目四、时间安排《嵌入式系统课程设计》安排在第六学期进行,时间1周。
嵌入式课程设计报告毕业论文教案一、教学目标通过本课程的学习,学生应该能够:1.了解嵌入式系统设计的基本原理和流程2.掌握基本的嵌入式硬件和软件开发技术3.能够使用开发板和相关工具进行嵌入式系统的设计和开发4.掌握常用的接口协议和通信方式,包括串口通信、SPI、I2C、CAN等5.能够设计和开发基本的嵌入式应用程序,如LED灯的控制、按键的检测、温度传感器的读取等二、教学内容及安排1.嵌入式系统概述内容:介绍嵌入式系统的定义、特点、应用领域、市场和发展趋势等内容。
时间:2学时2.嵌入式系统设计流程内容:介绍嵌入式系统设计的主要步骤和流程,包括需求分析、硬件设计、软件设计、测试和调试等内容。
时间:4学时3.嵌入式开发环境搭建内容:介绍嵌入式开发环境的基本配置和使用,包括Keil C51软件、ST-LINK下载器、ST-FLASH工具等。
时间:4学时4.嵌入式硬件设计内容:介绍嵌入式硬件设计的基本原理和方法,包括硬件选型、电路原理图设计、PCB布局和焊接等内容。
时间:10学时5.嵌入式软件设计内容:介绍嵌入式软件设计的基本原理和方法,包括汇编语言、C语言、编译、调试和下载等内容。
同时讲解如何使用方案手册和数据手册加速学习。
时间:16学时6.嵌入式应用程序设计内容:介绍嵌入式应用程序的设计和开发,包括LED灯的控制、按键的检测、温度传感器的读取、串口通信、SPI/I2C接口的应用等内容。
时间:14学时7.嵌入式系统测试和调试内容:介绍嵌入式系统的测试和调试方法,包括硬件测试、软件测试、仿真测试和调试工具等内容。
时间:4学时三、教学方法1.理论教学与实践结合,提高学生的实际操作能力。
2.讲授代码编写方法,由浅入深、由简到难地进行讲解。
3.组织实验、调试和考试等考核环节,促进学生知识的巩固和提高。
4.引导学生通过网络、图书馆等途径自主学习和获取嵌入式技术知识,培养学生的自主学习和创新能力。
四、教学手段1.教师演示和现场演示,帮助学生理解课程内容并进行实践操作。
最小嵌入式课程设计报告一、课程目标知识目标:1. 让学生理解嵌入式系统的基础知识,掌握最小嵌入式系统的设计与搭建方法。
2. 使学生掌握常见嵌入式硬件组件的原理与使用,如微控制器、传感器等。
3. 引导学生了解嵌入式软件编程的基础,学会使用至少一种编程语言进行嵌入式开发。
技能目标:1. 培养学生具备分析问题、设计解决方案的能力,能够针对特定需求设计最小嵌入式系统。
2. 提高学生的动手实践能力,能够独立搭建最小嵌入式系统并进行调试。
3. 培养学生具备一定的编程能力,能够编写简单的嵌入式程序,实现对硬件的控制。
情感态度价值观目标:1. 激发学生对嵌入式系统的兴趣,培养其探索精神,提高学习积极性。
2. 培养学生具备良好的团队合作意识,学会与他人共同解决问题。
3. 引导学生认识到嵌入式技术在现实生活中的广泛应用,培养其创新意识和社会责任感。
本课程针对高年级学生,具有较强的实践性和综合性。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果。
通过本课程的学习,学生将能够掌握嵌入式系统的基础知识,具备设计和搭建最小嵌入式系统的能力,同时培养良好的情感态度和价值观。
为实现课程目标,后续教学设计将注重理论与实践相结合,充分调动学生的主动性和积极性。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的基本概念、发展历程、应用领域及特点。
- 教材章节:第1章 嵌入式系统概述- 内容:嵌入式系统定义、分类、发展概况、典型应用。
2. 最小嵌入式系统硬件:讲解微控制器、传感器、执行器等硬件组件的原理与使用。
- 教材章节:第2章 嵌入式系统硬件- 内容:微控制器原理、传感器原理及应用、执行器原理及应用。
3. 嵌入式系统软件:介绍嵌入式编程基础,学习使用C语言进行嵌入式开发。
- 教材章节:第3章 嵌入式系统软件- 内容:嵌入式编程环境、C语言基础、I/O编程、中断处理。
4. 最小嵌入式系统设计与实践:结合实际案例,设计并搭建最小嵌入式系统。
嵌入式课程设计报告嵌入式课程设计报告Corte*-M3 是 ARM 公司基于 ARM V7 架构的新型芯片内核。
STM32V100-II 型是英蓓特公司新推出的一款基于 ST 意法半导体STM32 系列处理器(Corte*-M3 内核)的全功能评估板。
STM103V100-II 评估板有 USB,Motor Control,CAN,SD 卡,Smart 卡, UART,Speaker,LCD,LED,BNC,耳塞插孔等丰富的外设,有助于用户轻松开发 STM32 的强大功能。
STM32 系列运用了 ARM 最新的、先进架构 Corte*-M3 内核,本文论述了在 Keil Realview 开发环境上开发基于汇编语言的 LED 掌握程序,基于对 STM32 的 GPIO 寄存器写值配置思想,掌握EduKit-M3 试验平台的发光二极管 LED1、 LED2、 LED3、 LED4,使它们有规律地点亮。
一、设计概述1.1、设计需求Keil Realview 开发环境上,全部采纳汇编语言编程,实现对EduKit-M3 试验平台的发光二极管 LED1、LED2、LED3、LED4 的亮灭掌握,使它们有规律地点亮。
这里采纳例程提供的顺次点亮方式,根据 LED1 亮 LED2 亮 LED3 亮 LED4 亮,如此反复,要求每个 LED 亮灭之间延时一段时间,以加强可观性。
需要说明的是,这仅仅作为程序掌握 LED 的一种掌握方式,基于点亮 LED 的掌握原理,可以编程实现各种显示 LED 的亮灭模式,并提供一种通用的掌握方法,要求程序可读性强,易于修改。
1.2、设计原理〔1〕STM32 通用 GPIO 端口概述 STM32F10* 处理器上共有 7 个 I/O 端口:A、B、C、D、E、F、G,每个 16 个管脚每组端口〔寄存器需要以 32 位字形式访问〕每组端口有以下寄存器:, 32 位配置寄存器: GPIO*_CRL、GPIO*_CRH 32 为数据寄存器: GPIO*_IDR、GPIO*_ODR 32 位置位/复位寄存器: GPIO*_BSRR 16 位复位寄存器:GPIO*_BRR 32 为锁定寄存器: GPIO*_LCKR I/O 口通用输入、输出端口配置为输入时,每个 APB2 时钟周期将端口数据送输入寄存器(GPIO*_IDR),在输入模式下,输出是断开的。
嵌入式课程设计报告最近几年,几乎所有的IT 企业对应届毕业生都有抱怨:动手能力太差,编程水平低下。
下面和小编一起来看看报告吧!嵌入式课程设计报告Cortex-M3 是ARM 公司基于ARM V7 架构的新型芯片内核。
STM32V100-II 型是英蓓特公司新推出的一款基于ST 意法半导体STM32 系列处理器(Cortex-M3 内核)的全功能评估板。
STM103V100-II 评估板有USB,Motor Control,CAN,SD 卡,Smart 卡,UART,Speaker,LCD,LED,BNC,耳塞插孔等丰富的外设,有助于用户轻松开发STM32 的强大功能。
STM32 系列使用了ARM 最新的、先进架构Cortex-M3 内核,本文论述了在Keil Realview 开发环境上开发基于汇编语言的LED 控制程序,基于对STM32 的GPIO 寄存器写值配置思想,控制EduKit-M3 实验平台的发光二极管LED1、LED2、LED3、LED4,使它们有规律地点亮。
、设计需求Keil Realview 开发环境上,全部采用汇编语言编程,实现对EduKit-M3 实验平台的发光二极管LED1、LED2、LED3、LED4 的亮灭控制,使它们有规律地点亮。
这里采用例程提供的顺序点亮方式,按照LED1 亮LED2 亮LED3 亮LED4 亮,如此反复,要求每个LED 亮灭之间延时一段时间,以增强可观性。
需要说明的是,这仅仅作为程序控制LED 的一种控制方式,基于点亮LED 的控制原理,可以编程实现各种显示LED 的亮灭模式,并提供一种通用的控制方法,要求程序可读性强,易于修改。
、设计原理STM32 通用GPIO 端口概述STM32F10x 处理器上共有7 个I/O 端口:A、B、C、D、E、F、G,每个16 个管脚每组端口每组端口有以下寄存器:,32 位配置寄存器:GPIOx_CRL、GPIOx_CRH 32 为数据寄存器:GPIOx_IDR、GPIOx_ODR 32 位置位/复位寄存器:GPIOx_BSRR 16 位复位寄存器:GPIOx_BRR 32 为锁定寄存器:GPIOx_LCKR I/O 口通用输入、输出端口配置为输入时,每个APB2 时钟周期将端口数据送输入寄存器(GPIOx_IDR),在输入模式下,输出是断开的。
输出模式时:写到输出寄存器(GPIOx_ODR) 的值被传给对应的I/O 引脚。
在输出模式下,输入是允许的程序设计原理EduKit-M3 实验平台上,通过写值配置端口数据输出寄存器GPIOC_ODR值,可以实现对四个LED 的亮灭控制,因为C 口位和四个LED 灯连通。
而这里主要是通过对时钟控制寄存器以及端口C 的各配置寄存器和输出寄存器写值,以达到配置端口,控制LED 的目的。
汇编语言与C 语言相比,要求更加贴近硬件,了解M3 内核的内部结构和寄存器地址。
基于汇编语言的编程控制,只需要找出需要配置的端口基地址,然后弄清楚各寄存器的偏移地址,以及各寄存器每位的含义,按照要求写1 或写0 即可。
2硬件电路硬件电路描述本设计是基于EduKit-M3 实验平台的嵌入式开发实例,EduKit-M3 实验平台有四个LED 灯,分别为LED1、LED2、LED3、LED4,对应的连接到I/O 的C 口、、、四位输出位上,不需要外扩电路或者额外接线,简单易行。
程序流程图软件设计描述整个工程包含3 个源文件:、和my ,stm32f10x_ 其中为启动代码,。
启动代码作用是:1)堆和栈的初始化;2)向量表定义;3)地址重映射及中断向量表的转移;4)设置系统时钟频率;5)中断寄存器的初始化;6)进入汇编主程序。
my 是汇编主程序,完成所有控制功能。
程序工作原理概述:对于LED 的控制,主要通过对I/O 端口的配置,将对应的寄存器相应的位写 1 写0 控制。
程序首先要经过启动代码段进行相关的启动配置,然后跳转到汇编主程序。
汇编主程序完成了时钟、端口配置以及LED 点亮的所有功能。
首先需要对于系统时钟进行配置,已获得系统所用频率。
然后进行端口配置低、高寄存器配置,获得输入输出模式以及最大速度。
将时钟和端口配置完成后,就可以对输出寄存器进行对应位的写值控制了,从而达到控制LED 的目的,高电平点亮,低电平熄灭。
点亮LED 后,转入延时子程序,延时子程序写值0X000FFFFF,做寄存器值减法,减到0 后,过程所需时间即是延时时间,即单个LED 点亮时间。
本程序设置循环点亮模式,即LED1 到LED4 顺序循环点亮,将对应位逐次写1,如果需要修改点亮模式,只需修改寄存器的值以及写值顺序即可。
寄存器配置描述端口配置低寄存器(GPIOC_CRL) C口基地址:0X40011000 偏移地址:0x00 复位值:0x44444444 寄存器配置:0X22222222 功能含义:口配置低寄存器为模拟输入模式,端通用推挽输出模式,输出模式,最大速? 2MHz端口配置高寄存器(GPIOC_CRH) C口基地址:0X40011000 偏移地址:0x04 复位值:0x44444444 寄存器配置:0X22222222 功能含义:口配置高寄存器为模拟输入模式,端通用推挽输出模式,输出模式,最大速? 2MHz 端口输出数据寄存器(GPIOC_ODR) C口基地址:0X40011000 地址偏移:0Ch 寄存器配置0xfffffc4f 0xfffffc8f 复位值:00000000h 功能含义位写1,对应点亮LED1 位写1,对应点亮LED240xfffffd0f 位写1,对应点亮LED3 位写1,对应点亮LED4时钟控制寄存器(RCC_CR) 复位和时钟基地址:0X40021000 偏移地址: 0x00 复位值: 0x000 XX83 寄存器配置:0X00000003 功能含义:PLL 未锁定,PLL 关闭,时钟监测器关闭,外部1-25MHz 振荡器没有旁?,外部1-25MHz 时钟没有就绪,HSE 振荡器关闭内部8MHz 时钟就绪,内部8MHz 时钟开启。
时钟配置寄存器(RCC_CFGR) 复位和时钟基地址:0X40021000 偏移地址: 0x04 复位值: 0x0000 0000 寄存器配置:0X00000000 功能含义:没有时钟输出,PLL 时钟倍分频作为USB 时钟,PLL 2 倍频输出,HSE 不分频,HSI 时钟2 分频后作为PLL 输入时钟,PCLK2 2 分频后作为ADC 时钟,HCLK 不分频,HCLK 不分频,SYSCLK 不分频,HSI 作为系统时钟,HSI 作为系统时钟。
AHB外设时钟使能寄存器(RCC_AHBENR) 复位和时钟基地址:0X40021000 偏移地址:0x14 复位值:0x0000 0014 寄存器配置:0X00000014 功能含义:睡眠模式时闪存接口电路时钟开启,睡眠模式时SRAM 时钟开启,DMA 时钟关闭APB2 外设时钟使能寄存器(RCC_APB2ENR) 复位和时钟基地址:0X40021000 偏移地址:0x18 复位值:0x0000 0000 寄存器配置:0XFFFFFFFF 功能含义:USART1 时钟开启,SPI1时钟开启,TIM1 时钟开启,ADC2 时钟开启,ADC1 时钟开启,IO 口E 时钟开启,IO 口D 时钟开启,IO 口C 时钟开启,IO 口B 时钟开启,IO 口A 时钟开启,辅助功能IO 时钟开启主要程序说明启动代码转入汇编主程序的设置:【启动代码段设置:】Reset_Handler PROC EXPORT Reset_Handler IMPORT MAIN ;声明外部函数,导入符号LDR R0, =MAIN ;等待工作调用BX R0 ;跳转到汇编主程序MAIN 函数ENDP ;过程段结束【汇编主程序设置:】AREA MYCODE,CODE,READONLY ;定义一个代码段,属性为只读EXPORT MAIN MAIN PROC EndP END 汇编主程序;配置时钟5LDR R1,=0X40021000 LDR R0,=0X00000003 STR R0, LDR R0,=0X00000000 STR R0, LDR R0,=0X00000014 STR R0, 时钟控制寄存器入口配置时钟控制寄存器(RCC_CR)配置时钟配置寄存器(RCC_CFGR)配置AHB 外设时钟使能寄存器RCC_AHBENRLDR R0,=0XFFFFFFFF STR R0, ;配置APB2 外设时钟使能寄存器(RCC_APB2ENR) ;----------------------------------------------------------------------------------------------------;配置端口MOVS R0,#0X22222222 LDR R1,=0X40011000 STR R0, ;配置端口配置寄存器GPIOC_CRL MOVS R0,#0X22222222 LDR R1,=0X40011000 STR R0, ;配置端口配置寄存器GPIOC_CRH ;---------------------------------------------------------------------------------------------------;点亮LED LDR R0,=0xfffffc4f STR R0, ;将0xfffffc4f 写进GIPOC_ODR, 点亮LED1 BL DELAY ;延时--------------------------------------------------------------------------------------------------------LDR R0,=0xfffffc8f STR R0, ;将0xfffffc8f 写进GIPOC_ODR, 点亮LED2 BL DELAY ;延时-------------------------------------------------------------------------------------------------------LDR R0,=0xfffffd0f STR R0, ;将0xfffffd0f 写进GIPOC_ODR, 点亮LED3 BL DELAY ;延时-------------------------------------------------------------------------------------------------------LDR R0,=0xfffffe0f STR R0, ;0xfffffe0f 写进GIPOC_ODR, 点亮LED4 BL DELAY ;延时-------------------------------------------------------------------------------------------------------B MAIN ;跳到MAIN 函数;------------------------------------------------------------------------延时子程序DELAY6LDR R3,=0X000FFFFF ;延时控制字DELAY_1 SUBSR3,R3,#0X01 ;延时控制字自减BEQ DELAY_OUT ;为0 跳出返回 B DELAY_1 ;不为0 回转继续做减法DELAY_OUT BX LR ;程序返回调试过程(1) 使用Keil uVision3 通过ULINK 2 仿真器连接EduKit-M3 实验平台,打开建立的my led controler 工程,点击子目录下的my 文件,编译链接工程。