《嵌入式系统》课程设计说明书基于STM32的LED调光系统的设计学院电子信息工程学院专业班级电子信息工程(1)班学生姓名黄日志学生学号201230085232指导教师朱俊杰提交日期2015-1-7摘要LED调光系统的控制核心采用ARM系列微处理器STM32,实现LED驱动的智能控制。ARM系列微处理器的应用越来越广泛,其采用当前最先进的设计理念,使得性能大大提升。能使我们在微控制器、集成开发软件、编程语言等知识的学习和掌握水平,使我们在微控制器设计、软件编程等方面的应用能力得到全面训练和提高。本文主要通过设计一个利用ARM芯片实现对LED灯的灯光和闪烁的控制,达到设计的要求。AbstractLEDcontrolcoreopticalsystemwithARMseriesmicroprocessorSTM32,therealizationofintelligentLEDdrivercontrol.ARMseriesmicroprocessorisusedmoreandmorewidely,thedesignconceptofthemostadvanceditsuse,makingtheperformanceisgreatlyimproved.Willenableustothemasterandthelevelcontroller,integrateddevelopmentsoftware,programminglanguage,thelearningofknowledge,makeourapplicationabilityinmicrocontrollerdesign,softwareprogrammingandotheraspectsofthecomprehensivetrainingandimprove.ThispapermainlythroughtherealizationoftheLEDlamplightsandflashingcontroldesignusingaARMchip,tomeetthedesignrequirements.关键词:LED;STM32;调光系统第一章绪论1.1课题的目的和意义LED显示屏作为一种新的显示器件,近年来得到了广泛的应用。随着技术的不断更新,LED显示屏正朝着全彩化的方向发展。设计了一种LED显示屏控制系统,该系统以ARMCortex-M3内核芯片STM32F10作为控制中心,以实现对LED灯的灯光和闪烁。LED显示屏是利用LED点阵模块或像素单元组成的一种现代平面显示屏幕,具有发光效率高、使用寿命长、视角范围大、色彩丰富以及对室内外环境适应能力强等优点。目前的LED显示屏控制系统多采用ARM处理器来完成整个系统的功能,这种控制系统在数据处理速度上存在很大的局限,影响显示效果的连续性。基于此,在分析了STM32微处理器总线结构特点的基础上,提出了STM32的控制系统方案,该方案充分了利用STM32微处理器的灵活的储器控制技术和可编程逻辑器件的灵活性,提高了系统数据处理的速度,而且简化了电路结构,方便调试。1.2研究概况与发展趋势(1)研究概况近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。STM32控制LED技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。(2)发展趋势信息时代,数字时代使得STM32控制LED系统获得了巨大的发展契机,为STM32控制LED系统市场展现了美好的前景,从中我们可以看出未来STM32控制LED系统的几大发展趋势:1.STM32控制LED系统是嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持;2.未来的STM32控制LED系统设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口;3.精简系统内核、算法,降低功耗和软硬件成本等。1.3本文的主要工作和内容安排(1)主要工作设置一个STM32控制LED系统,利用ARM芯片实现对LED灯的灯光和闪烁的控制(2)内容安排1.查阅相关文献资料,熟悉所选ARM芯片;2.总体设计方案规划,实现;3.系统硬件设计,熟悉I/O接口,定时器的工作原理;4.系统软件设计,包括流程图和程序;5.撰写设计报告。.第二章正文2.1设计要求利用ARM芯片实现对LED灯的灯光和闪烁的控制1.用定时器TIM2通道2控制LED1灯的闪烁,每1s亮一次,再过1s每一次,其中LED1接在PA1脚上;2.对周期进行设置,控制通用定时器TIM1的1通道,实现1KHz的不同占空比波形,用于控制LED2亮度的明暗渐变,其中LED2接在实验板的PA8脚上。(PWM脉冲宽度调制)2.2设计内容(1)STM32处理器功能介绍控制系统电路中的MCU(微控制器)选用了STM32系列高性能单片机。STM32具有MCU应用领域的32位处理器的性能,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。STM32的高性能Cortex-M3内核为1.25DMips/MHz;含有一流的外设:1us的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHZ的I/O翻转速度;在72MHz时消耗36mA,待机时下降的2uA。内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHzRC振荡电路。内部40kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。调试模式:串行调试(SWD)和JTAG接口。(2)I/O接口初始化每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。GPIO端口的每个位可以由软件分别配置成多种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能、开漏复用功能。每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。下图给出了一个I/O端口位的基本结构。(3)设计方案1.用定时器TIM2通道2控制LED1灯的闪烁,每1s亮一次,再过1s每一次,其中LED1接在PA1脚上;为了实现特定频率的产生,为了方便看到效果,将LED2的控制脚作为了频率输出引脚,产生的频率不能过高,会造成看不到闪烁变换,所以,将设计频率设定为12.5Hz,PB1引脚默认是作为通用IO口使用,为了产生特定频率,利用了该引脚可以复用为TIM2_CH2,根据手册,需要用到局部复用映射,才能将TIM2_CH2映射到PB1。在定时器2的初始化中,用到了输出比较2模式的翻转设置。也就是当TIM2_CCR2=TIM3_CNT时,翻转输出的电平。以产生需要的频率,TIM2_CCR2的值决定了翻转的频率。当TIM2_CCR2=TIM3_CNT时,产生一次电平翻转,并在中断服务程序里重新完成对TIM2_CCR2的装载。依次往复,产生了所需要的12.5Hz的频率。2.对周期进行设置,控制通用定时器TIM1的1通道,实现1KHz的不同占空比波形,用于控制LED2亮度的明暗渐变,其中LED2接在实验板的PA8脚上。由于TIM1计数器的时钟频率是72MHz,希望各通道输出频率为1KHZ,根据3倍预分频后,时钟频率为24MHz,根据公式ftim1=TIM1CLK/(TIM1_Period+1),可得到TIM1预分频的值为24000,根据公式通道输出占空比=TIM1_CCR2/(TIM1_Period+1),可以得TIM1_Pulse的计数值,逐步改变这个值,可以控制占空比,从而获得LED2亮度明暗渐变的效果。3.设计总结这次嵌入式系统课程设计我们历时两个星期,在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做嵌入式课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:C语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。要做好一个课程设计,就必须做到:在设计程序之前,对所用嵌入式的内部结构有一个系统的了解。在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路。在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,使自己学到了不少知识,虽然经历了不少艰辛,但收获同样巨大。查重报告课程设计评语完成情况优秀良好中等及格不及格出勤方案设计安装调试答辩报告总成绩指导教师评语