"嵌入式系统课程设计报告:基于STM32和uC/OS-II的多任务设计"

版权申诉
0 下载量 163 浏览量 更新于2024-03-02 1 收藏 569KB DOC 举报
嵌入式系统课程设计报告.doc;NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告 学生:[学生姓名] 学号:[学号] 学院:[学院] 专业:[专业] 指导老师:[指导老师姓名] 同组成员:[同组成员姓名] 2016年12月26日 一、课程设计目的 本课程设计旨在通过软件编程与仿真调试的实践,巩固和进一步掌握嵌入式系统的原理和应用方法。作为毕业设计前的重要实践,本课程设计旨在为今后从事嵌入式系统相关工作岗位打下一个良好的基础。 二、设计题目与要求 2.1 设计题目:基于STM32和uC/OS-II的多任务设计 2.2 功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,包括驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。 2.3 设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。 三、设计过程 在课程设计过程中,我们首先学习了KEIL软件的使用方法,接着深入理解了STM32寄存器和库函数的使用,以及uC/OS-II任务管理函数的应用。在具备了必要的理论基础后,我们开始进行实际的编程和调试工作,逐步完成了设计要求中的4个任务。 针对驱动一个LED指示灯闪烁的任务,我们成功地使用STM32库函数控制相应的寄存器,实现了LED的闪烁效果。对于由3个LED指示灯组成的流水灯任务,我们通过巧妙地控制LED灯的状态,使得三个LED灯像水流一样流动起来。同时,驱动蜂鸣器的任务也得到了成功实现,我们使用STM32的相关函数完成了蜂鸣器的驱动。最后,利用swd方式进行printf输出的任务也没有太大问题,我们顺利地实现了数据的输出功能。 在整个设计过程中,我们遇到了许多挑战和问题,但通过不懈的努力和团队合作,最终都得到了圆满的解决。在调试过程中,我们反复修改代码,不断优化算法,最终达到了预期的效果。同时,我们还注意到了软件与硬件协同设计的重要性,不仅要关注代码的编写,还需要深入理解底层硬件的工作原理,这样才能更好地实现对硬件的控制。 四、课程设计总结与展望 通过本次课程设计,我们对嵌入式系统的原理和应用方法有了更深入的理解,不仅加强了对KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数的熟练应用,也提升了我们的团队合作能力和问题解决能力。我们相信,这些经验和能力的提升将为我们未来从事嵌入式系统相关工作岗位打下扎实的基础。 在今后的学习和工作中,我们将继续努力,不断学习和提升自己,不断完善和扩展我们在嵌入式系统领域的知识和技能,为实现更多技术创新和项目实施贡献自己的力量。 最后,我们要感谢指导老师和同组成员在本次课程设计中给予的指导和帮助,也要感谢学校提供的学习平台和资源。在接下来的学习和工作中,我们将继续发扬团结协作、勇攀高峰的精神,为实现自己的梦想不懈努力! (以上为2000字人工总结)
308 浏览量
嵌入式系统 课程设计报告 设计任务一 十字路口交通灯控制 一、设计目的: 1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法; 二、具体任务: 1.采用PROTEUS完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利浦 公司的LPC2106,东西南北方向分别设置红黄绿3个指示灯,东西方向和南北方向各用2个 数码管显示通行时间; 2.用ADS1.2编写C语言应用程序,完成十字路口交通灯控制; 3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证。要求东西方向和南北 方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是15秒倒计时;每当倒 计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。 硬件电路设计。(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEU S电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明) 参考图如下: 1、无左转弯proteus电路图: 2、有左转弯proteus电路图: 硬件电路说明: 1、无左转弯电路图说明:该电路是一个两位数码管显示的十字交通灯控制proteus硬 件仿真图。功能介绍如下:启动后首先东西绿灯和南北红灯都亮15秒(第一个状态), 然后东西方向绿灯变闪烁黄灯(每0.5秒交替一次)南北方向红灯保持亮态,该状态5秒 后,转变为东西向红灯和南北向绿灯同时亮15秒,然后南北方向绿灯变闪烁黄灯(每0. 5秒交替一次),东西方向红灯保持亮态,持续5秒后,再转为第一个状态,如此循环往复 。 2、有左转弯电路图说明:该电路在上电路基础上加一个东西与南北方向左转弯灯的 控制,功能介绍如下:首先是只有东西方向直行绿灯亮(第一个状态),10秒后开始东 西黄灯闪烁,维持5秒后转为东西方向左转绿灯亮,其他均为红灯,10秒后绿灯开始闪烁 ,持续5秒后转为南北方向直行绿灯亮,其他均红灯,10秒后开始南北直行黄灯闪烁,维 持5秒后转为南北左转绿灯亮,其他均转红灯,再过10秒后南北左转绿灯开始闪烁,维持 5秒后转为第一个状态,如此往复。 以上两个程序各状态时间均可由程序参数调节,便可改变交通路口的高峰期时段的各 方向流通状态,很简洁方便,在此不详述。 四、源程序 1、十字路口无左转弯交通灯控制源程序: #include "config.h" #include"LPC2106.h" void delay(unsigned int x) //延迟0.xMS { while(x--) { unsigned char j; for(j=0;j<125;j++) { ; } } } uint8 led[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管段选值 void display() //数码管显示 { uint8 i=15; while(i) { IOSET = (led[ i / 10 ] << 13) " (led[ i % 10 ] << 6); delay(5000); IOCLR = (led[ i / 10 ] << 13) " (led[ i % 10 ] << 6); i--; } } int main(void) { uint8 k; int8 type=1; PINSEL0=0x00000000; //将管脚设置为通用IO端口GPIO PINSEL1=0x00000000; IODIR=0xFFFFFFFF; //将方向寄存器IODIR全设为输出=1 while(1) { switch(type) { case 1: //东西绿灯亮,南北红灯亮,15秒。 IOSET=0x00000021; display(); type=2; break; case 2: //东西黄灯闪烁,南北红灯亮,5秒。 IOCLR=0xFFFFFFFF; k=5; while(k) { IOSET=0x00000011; IOSET = (led[ k / 10 ] << 13) " (led[ k % 10 ] << 6); delay(3000); IOCLR=0x00000010; IOCLR = (led[ k / 10 ] << 13) " (led[ k % 10 ] << 6); delay(3000); k--; } type=3; break; case 3: //南北绿灯亮,东西红灯亮,15秒。 IOCLR=0x00000001; IOSET=0x0000000C; display(); ty
161 浏览量
嵌入式系统课程设计报告 ..嵌入式系统课程设计报告课程名称: 嵌入式系统课程设计 项目名称:    基于ARM实现MP3音乐盒 专 业:    电子科学与技术    一、 设计内容基本功能:    预存四首歌曲,实现循环播放;    每个按键对应一首歌曲。    拓展功能:    通过按键简单演奏音乐,类似钢琴;    实现两个模式的切换,切歌模式和音量加减模式。    二、 设计思路基础功能:    将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传 到内核。    内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据) 被解码后送到DAC发出声音。将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一 首音乐,通过地址的递增和循环来实现音乐的自动循环播放。按键对曲目的控制,可通 过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文 件地址的控制。将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。另外, 我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。使用SPI1总 线将TFT显示屏连接到内核,显示按键功能、当前曲目、当 前模式等信息。    由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。 我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同 模式的选择和按键的复用。拓展功能:    基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调制波激励扬声器,从而使扬声器发出一定频率的声音 。所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不 同按键与不同扬声器发生频率的对应。然后使一个按键的按下与松开均进入中断,且分 别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加 功能表现地更自然。    三、 硬件配置基础功能:    (1)SD卡:    存储音频数据配置方法:    根据开发板原理图,配置方法如下图所示(2)VS1053解码芯片:    将输入的比特流解码后送入DAC配置方法:    音频解码模块与开发板接线方式:    //5V- 嵌入式系统课程设计 项目名称:    基于ARM实现MP3音乐盒 专 业:    电子科学与技术    一、 设计内容基本功能:    预存四首歌曲,实现循环播放;    每个按键对应一首歌曲。    拓展功能:    通过按键简单演奏音乐,类似钢琴;    实现两个模式的切换,切歌模式和音量加减模式。    二、 设计思路基础功能:    将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传 到内核。    内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据) 被解码后送到DAC发出声音。将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一 首音乐,通过地址的递增和循环来实现音乐的自动循环播放。按键对曲目的控制,可通 过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文 件地址的控制。将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。另外, 我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。使用SPI1总 线将TFT显示屏连接到内核,显示按键功能、当前曲目、当 前模式等信息。    由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。 我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同 模式的选择和按键的复用。拓展功能:    基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调制波激励扬声器,从而使扬声器发出一定频率的声音 。所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不 同按键与不同扬声器发生频率的对应。然后使一个按键的按下与松开均进入中断,且分 别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加 功能表现地更自然。    三、 硬件配置基础功能:    (1)SD卡:    存储音频数据配置方法:    根据开发板原理图,配置方法如下图所示(2)VS1053解码芯片:    将输入的比特流解码后送入DAC配置方法:    音频解码模块与开发板接线方式:    //5V:PC机一台;    P4 2.06CPU/40GHD/512M RAM以上配置,STM32F103 开发板一套;    外接扬声器一个    四、 设计步骤或流程图基础功能:    1.初始化包括单片机本身的初始化和 VS105