嵌入式系统设计课设报告

合集下载

嵌入式课程设计报告

嵌入式课程设计报告
译、调试等功能。
调试工具
使用GDB等调试工具进行程序调试, 可实现断点设置、变量查看、堆栈跟
踪等功能。
版本控制工具
使用Git等版本控制工具进行代码管理 ,实现多人协作开发、版本回溯等功 能。
性能分析工具
使用Valgrind等性能分析工具进行程 序性能分析,可实现内存泄漏检测、 函数调用关系分析等功能。
课程设计总结与展望
总结本次课程设计的经验教训和收 获,展望嵌入式系统未来的发展趋 势和应用前景。
02
硬件平台选择与搭建
常见嵌入式硬件平台比较
ARM平台
高性能、低功耗,广泛应用于智能手机、 平板电脑等移动设备。
PowerPC平台
高性能、高可靠性,适用于工业控制、航 空航天等高端应用设备、 数字电视等领域。
07
总结与展望
本次课程设计收获总结
理论与实践结合
通过本次课程设计,深入理解了 嵌入式系统的基本原理,同时将 理论知识应用于实际项目中,实 现了理论与实践的有机结合。
技能提升
在课程设计过程中,掌握了嵌入 式系统开发的基本技能,包括硬 件设计、软件编程和调试技术等 。
团队合作
与团队成员紧密合作,共同完成 了课程设计的任务,提高了团队 协作和沟通能力。
05
系统实现过程与代码展示
关键模块代码实现技巧分享
模块化设计
将系统划分为多个独立的功能模块,每个模块具有明 确的接口和功能,便于代码的管理和复用。
高效算法选择
针对系统需求,选择合适的算法和数据结构,以提高 代码执行效率。
代码优化
通过减少冗余代码、提高代码可读性和可维护性,降 低系统资源消耗。
系统集成测试方法论述
嵌入式课程设计报告

嵌入式开发系统课程设计

嵌入式开发系统课程设计

嵌入式开发系统课程设计一、课程目标知识目标:1. 理解嵌入式系统的基本概念、组成和分类;2. 掌握嵌入式开发环境搭建及编程基础;3. 学习嵌入式系统设计与实现的基本方法;4. 了解嵌入式系统在实际应用中的发展及其在各领域的应用。

技能目标:1. 能够独立搭建嵌入式开发环境,进行基本的程序编写和调试;2. 学会使用常见的嵌入式系统设计工具和软件;3. 掌握嵌入式系统硬件与软件的协同设计方法;4. 能够运用所学知识解决实际问题,完成一个小型嵌入式项目的设计与实现。

情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发其探究精神和创新意识;2. 培养学生的团队协作和沟通能力,使其能够在项目实践中相互学习、共同进步;3. 增强学生的社会责任感,使其认识到嵌入式技术在国家战略和民生领域的重大意义;4. 引导学生树立正确的价值观,关注技术发展对社会和环境的影响,培养其良好的职业道德。

二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的基本概念、发展历程、特点及应用领域,对应教材第一章内容。

- 嵌入式系统定义与分类- 嵌入式系统的历史与发展趋势- 嵌入式系统的应用领域2. 嵌入式系统硬件平台:讲解嵌入式硬件系统的组成、结构与原理,对应教材第二章内容。

- 嵌入式处理器- 存储器与I/O接口- 嵌入式系统硬件设计方法3. 嵌入式系统软件平台:介绍嵌入式操作系统、编程语言及软件开发工具,对应教材第三章内容。

- 嵌入式操作系统原理与应用- 嵌入式编程语言(C、汇编等)- 软件开发工具与调试方法4. 嵌入式系统设计与实现:阐述嵌入式系统设计与实现的方法与步骤,对应教材第四章内容。

- 系统需求分析- 硬件与软件协同设计- 系统测试与优化5. 嵌入式项目实践:结合实际案例,让学生动手实践嵌入式项目设计与开发,对应教材第五章内容。

- 项目选题与需求分析- 硬件系统设计与搭建- 软件编程与调试- 系统测试与总结教学内容安排与进度根据学生实际情况进行调整,确保学生能够循序渐进地掌握嵌入式系统的基本知识和技能。

嵌入式系统stm32课程设计

嵌入式系统stm32课程设计

嵌入式系统stm32课程设计一、课程目标知识目标:1. 理解嵌入式系统基本概念,掌握STM32的硬件结构和编程环境。

2. 学会使用C语言进行STM32程序设计,理解中断、定时器等基本原理和应用。

3. 掌握嵌入式系统外围设备的使用,如LED、按键、串口等,并能进行简单的系统集成。

技能目标:1. 能够运用所学知识,设计并实现具有实际功能的嵌入式系统项目。

2. 培养学生的动手实践能力,提高问题解决能力和程序调试技巧。

3. 增强团队协作能力,通过项目实践,学会分工合作和沟通交流。

情感态度价值观目标:1. 培养学生对嵌入式系统的兴趣,激发学习热情,形成自主学习的习惯。

2. 树立正确的工程观念,注重实际应用,关注技术发展,提高创新意识。

3. 培养学生的责任心,使其认识到所学知识对社会和国家的贡献,树立远大理想。

课程性质:本课程为实践性较强的课程,结合理论知识和实际操作,培养学生的嵌入式系统设计能力。

学生特点:学生具备一定的电子技术基础和编程能力,对嵌入式系统有一定了解,但缺乏实际项目经验。

教学要求:结合课程特点和学生学习情况,注重理论与实践相结合,通过项目驱动,引导学生主动探究,提高解决问题的能力。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 嵌入式系统概述- 嵌入式系统的定义、特点与应用领域- STM32微控制器简介2. STM32硬件结构与编程环境- STM32的内部结构、外设接口- Keil MDK集成开发环境的使用3. STM32编程基础- C语言基础回顾- STM32程序框架与编译过程- 中断、定时器等基本原理及应用4. 外围设备使用- LED、按键、串口等外设的原理与编程- ADC、PWM等模拟外设的使用5. 嵌入式系统项目实践- 设计并实现具有实际功能的嵌入式系统项目- 项目分析与需求分析- 硬件电路设计与软件编程6. 课程总结与拓展- 课程知识梳理与巩固- 探讨嵌入式系统发展趋势与前沿技术教学内容安排与进度:第1-2周:嵌入式系统概述、STM32硬件结构与编程环境第3-4周:STM32编程基础第5-6周:外围设备使用第7-8周:嵌入式系统项目实践第9-10周:课程总结与拓展教学内容与教材关联性:本教学内容紧密结合教材,按照教材章节顺序进行教学,确保学生能够系统地掌握嵌入式系统STM32的知识点和技能。

嵌入式系统设计课设报告范本

嵌入式系统设计课设报告范本

嵌入式系统设计课设报告福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。

《嵌入式系统设计》是一门实践性很强的专业基础课,经过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。

培养大胆创造创造的设计理念,为今后就业打下良好的基础。

经过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、经过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。

D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比经过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。

任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。

嵌入式系统课课程设计

嵌入式系统课课程设计

嵌入式系统课课程设计一、教学目标本课程的教学目标是让学生掌握嵌入式系统的基本概念、原理和应用,培养学生运用嵌入式系统解决实际问题的能力。

具体分为以下三个部分:1.知识目标:(1)了解嵌入式系统的基本概念、特点和分类;(2)掌握嵌入式处理器、外围设备及其接口技术;(3)熟悉嵌入式操作系统的基本原理和常用操作系统;(4)了解嵌入式系统的设计方法和开发流程。

2.技能目标:(1)能够使用嵌入式处理器和外围设备搭建简单的嵌入式系统;(2)能够编写嵌入式系统的基本程序,实现常见的功能;(3)具备嵌入式操作系统的基本编程能力;(4)能够运用嵌入式系统解决实际问题,开展创新设计。

3.情感态度价值观目标:(1)培养学生对嵌入式系统的兴趣,激发学习热情;(2)培养学生团队合作精神,提高沟通与协作能力;(3)培养学生创新意识,培育勇于探索的精神;(4)培养学生责任感,强化安全意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.嵌入式系统概述:嵌入式系统的概念、特点、分类和应用领域;2.嵌入式处理器:嵌入式处理器的结构、工作原理和性能评估;3.嵌入式外围设备:存储器、输入输出接口、定时器等;4.嵌入式操作系统:嵌入式操作系统的原理、结构和常用操作系统;5.嵌入式系统设计方法:需求分析、系统架构设计、软件设计等;6.嵌入式系统开发流程:项目立项、系统设计、编程调试、测试等;7.嵌入式系统应用案例:常见嵌入式系统的应用案例分析。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解嵌入式系统的基本概念、原理和应用,使学生掌握相关知识;2.讨论法:学生针对嵌入式系统的某个主题进行讨论,提高学生的思考和表达能力;3.案例分析法:分析实际案例,使学生了解嵌入式系统在实际应用中的工作原理和设计方法;4.实验法:让学生动手搭建嵌入式系统,亲身体验嵌入式程序的编写和调试过程。

四、教学资源本课程的教学资源包括:1.教材:选用国内权威、实用的嵌入式系统教材;2.参考书:提供相关的嵌入式系统著作,供学生拓展阅读;3.多媒体资料:制作课件、教学视频等,丰富教学手段;4.实验设备:提供嵌入式系统实验平台,让学生动手实践。

嵌入式课程设计实验分析

嵌入式课程设计实验分析

嵌入式课程设计实验分析一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本原理和设计方法,能够独立完成简单的嵌入式系统设计任务。

具体来说,知识目标包括:了解嵌入式系统的概念、组成和分类;掌握嵌入式处理器的基本原理和选用方法;熟悉嵌入式操作系统的基本原理和应用。

技能目标包括:能够使用嵌入式处理器和开发工具进行嵌入式系统的设计和开发;能够运用嵌入式操作系统进行应用程序的开发。

情感态度价值观目标包括:培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力。

二、教学内容根据课程目标,教学内容主要包括嵌入式系统的概念、组成和分类,嵌入式处理器的基本原理和选用方法,嵌入式操作系统的基本原理和应用。

具体安排如下:1.嵌入式系统的概念、组成和分类:介绍嵌入式系统的定义、特点和应用领域,分析嵌入式系统的组成和分类。

2.嵌入式处理器的基本原理和选用方法:介绍嵌入式处理器的基本原理,包括指令集、架构和工作原理等,讲解如何根据应用需求选用合适的嵌入式处理器。

3.嵌入式操作系统的基本原理和应用:介绍嵌入式操作系统的基本原理,包括进程管理、内存管理、文件系统等,讲解嵌入式操作系统在实际应用中的案例。

三、教学方法为了实现课程目标,我们将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解嵌入式系统的概念、原理和应用,使学生掌握基本知识。

2.讨论法:学生针对嵌入式系统设计中的实际问题进行讨论,培养学生的创新意识和团队合作精神。

3.案例分析法:分析嵌入式操作系统在实际应用中的案例,使学生了解嵌入式操作系统的基本原理和应用。

4.实验法:引导学生动手实践,完成嵌入式系统的设计和开发,提高学生的实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用国内外优秀的嵌入式系统教材,为学生提供系统的学习资料。

2.参考书:推荐学生阅读嵌入式系统相关的参考书籍,丰富学生的知识体系。

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案一、教学目标通过本课程的学习,学生应该能够: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. 学会使用至少一种嵌入式编程语言,如C或Python,编写简单的嵌入式程序。

3. 了解嵌入式系统在不同领域的应用,如物联网、智能家居、自动化控制等。

技能目标:1. 能够运用所学知识,设计并实现简单的嵌入式项目,具备基本的嵌入式系统开发能力。

2. 掌握使用常见的嵌入式开发工具和调试方法,如Keil、IAR等。

3. 能够分析嵌入式系统的性能,针对实际问题提出合理的解决方案。

情感态度价值观目标:1. 培养学生对嵌入式系统的兴趣,激发他们探索新技术、新领域的热情。

2. 培养学生的团队协作精神,让他们在项目实践中学会沟通、分享和合作。

3. 培养学生的创新意识,鼓励他们勇于尝试,不断挑战自我,为我国嵌入式技术的发展贡献力量。

课程性质:本课程为大学嵌入式方向的课程,旨在使学生掌握嵌入式系统的基础知识和技能,培养具备实际开发能力的人才。

学生特点:大学嵌入式方向的学生具备一定的电子技术、计算机技术和编程基础,对新技术充满好奇,喜欢动手实践。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,强化项目实践,培养学生具备实际开发能力。

在教学过程中,将目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的定义、发展历程、应用领域及发展趋势,对应教材第一章内容。

- 嵌入式系统的基本概念- 嵌入式系统的历史与发展- 嵌入式系统的应用领域及前景2. 嵌入式硬件基础:讲解嵌入式系统的硬件组成、原理及性能指标,对应教材第二章内容。

- 嵌入式处理器- 存储器与I/O接口- 传感器与执行器3. 嵌入式软件基础:介绍嵌入式操作系统、编程语言及软件开发流程,对应教材第三章内容。

- 嵌入式操作系统原理- 嵌入式编程语言(C/Python)- 嵌入式软件开发流程4. 嵌入式系统设计与实践:通过项目实践,使学生掌握嵌入式系统的设计方法,对应教材第四章内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福州大学《嵌入式系统设计课设》报告书题目: 基于28027的虚拟系统姓名:学号:学院: 电气工程与自动化学院专业: 电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目与实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》就是与《嵌入式系统设计》课程相配套的实践教学环节。

《嵌入式系统设计》就是一门实践性很强的专业基础课,通过课程设计,达到进一步理解嵌入式芯片的硬件、软件与综合应用方面的知识,培养实践能力与综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。

培养大胆发明创造的设计理念,为今后就业打下良好的基础。

通过课程设计,掌握以下知识与技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用与调试能力2、课程设计题目与实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样与下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。

D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比通过串口通信发送给上位机;3、设计方案-----介绍系统实现方案与系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。

任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度与按键设定温度进行比较,并按照任务D的要求修订PWM占空比。

PWM频率为1K HZ:根据关系式:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)取SYSCLKOUT=60M HZ,HSPCLKDIV=6,CLKDIV=1,求得TBCLK=10M HZ。

将period设为10K,便得到1K HZ 的PWM波。

任务C:用KEY模块的中断实现温度给定。

任务D:在PWM的周期结束产生的中断中,通过改变比较点CMPA的位置来改变PWM占空比的大小。

任务E:利用CAP模块设置3个捕获点捕获PWM的上升沿与下降沿,计算得到PWM波的占空比。

任务F:利用SCI模块实现串口通信将温度与占空比上传到上位机。

此外,各模块的配置都与GPIO模块有关。

②系统原理图:28027 C2000 Piccolo Launchpad原理图4、程序流程--------各个模块的流程图5、程序代码①/*app、c*/// the includes#include"Application/app、h"//************************************************************** ************// the defines//************************************************************** ************// the globals//************************************************************** ************// the functionsvoid delay(uint32_t time){while(time--);}//延时函数// end of file②/*isr、c*/// the includes#include"Application/isr、h"//************************************************************** ************// the defines//************************************************************** ************// the globals//************************************************************** ************// the functionsinterrupt void LED_PWM_isr(void) //PWM的中断服务函数{if(MY_ADC<SET_TEMP) //环境检测温度小于设定温度时{mycmp-=100*(SET_TEMP-MY_ADC); //PWM占空比增大}else{mycmp+=100*(MY_ADC-SET_TEMP); //环境检测温度大于设定温度 // PWM占空比减小}PWM_setCmpA(myPwm1,mycmp); //设定CmpA值PWM_clearIntFlag(myPwm1); //清零PWM中断标志位PIE_clearInt(myPie,PIE_GroupNumber_3); //清零PIE中断标志位 mycmp=5000; //将比较点初值设为5000}interrupt void MY_ADC_isr(void) //ADC中断服务函数{ MY_ADC=ADC_readResult(myAdc,ADC_ResultNumber_0);//获取ADC转换的数字量MY_ADC= ADC_getTemperatureC(myAdc, MY_ADC);//将数字量转换为温度值ADC_clearIntFlag(myAdc, ADC_IntNumber_1);//清除中断标志位PIE_clearInt(myPie,PIE_GroupNumber_10);}interrupt void KEY_xint1_isr(void) //按键中断服务函数{SET_TEMP++;if(SET_TEMP>40){SET_TEMP=10;}PIE_clearInt(myPie,PIE_GroupNumber_1);}interrupt void MY_CAP_isr(void) //CAP中断服务函数{uint32_t CapEvent1Count=0,CapEvent2Count=0,CapEvent3Count=0;float fPwmDuty=0、0;CapEvent1Count = CAP_getCap1(myCap);CapEvent2Count = CAP_getCap2(myCap);CapEvent3Count = CAP_getCap3(myCap);fPwmDuty = (float)(CapEvent2Count - CapEvent1Count) / (CapEvent3Count - CapEvent1Count); //计算PWM占空比fPwmDuty=fPwmDuty*100;NOW_PWM=(int)fPwmDuty;CAP_clearInt(myCap, CAP_Int_Type_CEVT3);CAP_clearInt(myCap, CAP_Int_Type_Global);// Acknowledge this interrupt to receive more interrupts from group 4PIE_clearInt(myPie, PIE_GroupNumber_4);}//redefined in Isr、h// end of file①/*F2802x_Device、h*/#include"F2802x_Component/include/adc、h"#include"F2802x_Component/include/clk、h"#include"F2802x_Component/include/flash、h"#include"F2802x_Component/include/gpio、h"#include"F2802x_Component/include/pie、h"#include"F2802x_Component/include/pll、h"#include"F2802x_Component/include/timer、h"#include"F2802x_Component/include/wdog、h"#include"F2802x_Component/include/sci、h"#include"F2802x_Component/include/cap、h"①/*Key、c*/// the includes#include"User_Component/Key/Key、h"//************************************************************** ************// the defines//************************************************************** ************// the globals//************************************************************** ************// the functions// the function prototypes//! \brief KEY initail//! \param[in] None//! \param[out] Nonevoid KEY_initial(void){}////! \brief KEY configure//! \param[in] None//! \param[out] Nonevoid KEY_config(void){ //按键为GPIO12设置为输入口//1、 modeGPIO_setMode(KEY_obj, KEY1, GPIO_12_Mode_GeneralPurpose);//2、 directionGPIO_setDirection(KEY_obj, KEY1, GPIO_Direction_Input);//3、 pullupGPIO_setPullUp(KEY_obj, KEY1, GPIO_PullUp_Disable);//4、 qualificationGPIO_setQualification(KEY_obj, KEY1, GPIO_Qual_Sync);}//! \brief ScanKey API//! \param[in] key//! \param[out] the state of KEYuint16_t ScanKey(const GPIO_Number_e key){return GPIO_getData(KEY_obj, key);}//! \param[in] None//! \param[out] Nonevoid KEY_INT_config(void){ //(3)、 register PIR vectorPIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_4, (intVec_t) &KEY_xint1_isr);//(4)、 module interrupt configurePIE_setExtIntPolarity(myPie,CPU_ExtIntNumber_1,PIE_ExtIntPolarity_FallingEdge);GPIO_setExtInt(myGpio, GPIO_Number_12, CPU_ExtIntNumber_1);//(5)、 enable module IEPIE_enableExtInt(myPie, CPU_ExtIntNumber_1);//(6)、 enable PIEIERx、yPIE_enableInt(myPie, PIE_GroupNumber_1, PIE_InterruptSource_XINT_1);//(7) enable CPU IERxCPU_enableInt(myCpu, CPU_IntNumber_1);}////! \brief Interrupt Service Routine//! \param[in] None//! \param[out] NoneTARGET_EXT interrupt void KEY_xint1_isr(void); //redefined in Isr、h// end of file/*Key、h*/#ifndef _KEY_H_#define _KEY_H_// the includes#include<stdint、h>// driver#include"F2802x_Component/F2802x_Device、h"#include"User_Component/User_Mcu/User_System、h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/// For example// The module derived from GPIO#define KEY_obj myGpio //here myGpio is defined in System、h#define KEY1 GPIO_Number_12 //pinTARGET_EXT void KEY_initial(void);TARGET_EXT void KEY_config(void);TARGET_EXT void KEY_INT_config(void);TARGET_EXT interrupt void KEY_xint1_isr(void); //redefined in Isr、h/*-------end of hardware description -------------*/TARGET_EXT uint16_t ScanKey(const GPIO_Number_e key);/*-------end of API description -------------*/#define KEYPressed 1/*------- end of defines -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition②/*LED_PWM、c*/// the includes#include"User_Component/LED_PWM/LED_PWM、h"// the functionsvoid LED_PWM_initial(void){mycmp=0;}void LED_PWM_config(void){//GPIO的配置GPIO_setMode(myGpio,GPIO_Number_0,GPIO_0_Mode_EPWM1A);GPIO_setPullUp(myGpio,GPIO_Number_0,GPIO_PullUp_Disable);//PWM的配置CLK_disableTbClockSync(myClk);//PWM模块使能CLK_enablePwmClock(myClk,PWM_Number_1);//设置PWM的时钟//PWM_setClkDiv(myPwm1,PWM_ClkDiv_by_1);PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_6);//计数器的设置PWM_setCounterMode(myPwm1,PWM_CounterMode_Up);//PWM周期设置PWM_setPeriod(myPwm1,10000);//设置周期加载模式PWM_setPeriodLoad(myPwm1,PWM_PeriodLoad_Shadow);//比较点的设置PWM_setCmpA(myPwm1,5000);//PWM装载模式PWM_setLoadMode_CmpA(myPwm1,PWM_LoadMode_Period);//动作PWM_setActionQual_CntUp_CmpA_PwmA(myPwm1,PWM_ActionQual_Set); PWM_setActionQual_Period_PwmA(myPwm1,PWM_ActionQual_Clear);//时钟同步CLK_enableTbClockSync(myClk);}void LED_PWM_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_3,PIE_SubGroup Number_1,(intVec_t)&(LED_PWM_isr));//模块中断配置PWM_setIntMode(myPwm1,PWM_IntMode_CounterEqualPeriod);PWM_setIntPeriod(myPwm1,PWM_IntPeriod_FirstEvent);//PWM中断使能PWM_enableInt(myPwm1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_3, PIE_InterruptSource_EPWM1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_3);}// end of file/LED_PWM、h*/#ifndef _LED_PWM_H_#define _LED_PWM_H_// the includes#include<stdint、h>// driver#include"F2802x_Component/F2802x_Device、h"#include"User_Component/User_Mcu/User_System、h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void LED_PWM_initial(void);TARGET_EXT void LED_PWM_config(void);TARGET_EXT void LED_PWM_INT_config(void);TARGET_EXT interrupt void LED_PWM_isr(void); //redefined in Isr、h/*-------end of hardware description -------------*/TARGET_EXT uint16_t mycmp;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition③/*MY_ADC、c*/// the includes#include"User_Component/MY_ADC/MY_ADC、h"// the functionsvoid MY_ADC_initial(void){SET_TEMP=30; //初始设定温度为30摄氏度}void MY_ADC_config(void){ //ADC时钟使能CLK_enableAdcClock(myClk);//初始化ADC模块ADC_setVoltRefSrc(myAdc, ADC_VoltageRefSrc_Int);ADC_powerUp(myAdc);ADC_enableBandGap(myAdc);ADC_enableRefBuffers(myAdc);ADC_enable(myAdc);//温度转换使能ADC_enableTempSensor(myAdc);//soc配置ADC_setSocChanNumber(myAdc, ADC_SocNumber_0, ADC_SocChanNumber_A5);ADC_setSocSampleWindow(myAdc, ADC_SocNumber_0, ADC_SocSampleWindow_7_cycles);ADC_setSocTrigSrc(myAdc, ADC_SocNumber_0, ADC_SocTrigSrc_EPWM1_ADCSOCA);//PWM配置PWM_setSocAPulseSrc(myPwm1,PWM_SocPulseSrc_CounterEqualZero);PWM_setSocAPeriod(myPwm1,PWM_SocPeriod_FirstEvent);PWM_enableSocAPulse(myPwm1);}void MY_ADC_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_10,PIE_SubG roupNumber_1,(intVec_t)&(MY_ADC_isr));//模块中断配置ADC_setIntPulseGenMode(myAdc, ADC_IntPulseGenMode_Prior); ADC_setIntSrc(myAdc,ADC_IntNumber_1, ADC_IntSrc_EOC0);ADC_setIntMode(myAdc, ADC_IntNumber_1, ADC_IntMode_ClearFlag);//ADC中断使能ADC_enableInt(myAdc,ADC_IntNumber_1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_10, PIE_InterruptSource_ADCINT_10_1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_10);}// end of file/*MY_ADC、h*/#ifndef _MY_ADC_H_#define _MY_ADC_H_// the includes#include<stdint、h>// driver#include"F2802x_Component/F2802x_Device、h"#include"User_Component/User_Mcu/User_System、h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_ADC_initial(void);TARGET_EXT void MY_ADC_config(void);TARGET_EXT void MY_ADC_INT_config(void);TARGET_EXT interrupt void MY_ADC_isr(void); //redefined in Isr、h/*-------end of hardware description -------------*/TARGET_EXT uint16_t MY_ADC;TARGET_EXT uint16_t SET_TEMP;/*------- end of globals -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition④/*MY_CAP、c*/// the includes#include"User_Component/MY_CAP/MY_CAP、h"#include"User_Component/User_Mcu/User_System、h"void MY_CAP_initial(void){}void MY_CAP_config(void){GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable);GPIO_setQualification(myGpio, GPIO_Number_5, GPIO_Qual_Sync);GPIO_setMode(myGpio, GPIO_Number_5, GPIO_5_Mode_ECAP1);CLK_enableEcap1Clock(myClk);CAP_disableInt(myCap, CAP_Int_Type_All); // 禁止CAP中断 CAP_clearInt(myCap, CAP_Int_Type_All); // 清除CAP中断标志位 CAP_disableCaptureLoad(myCap); // Disable CAP1-CAP4 register loadsCAP_disableTimestampCounter(myCap); // Make sure the counter is stopped// Configure peripheral registersCAP_setCapContinuous(myCap); // continuousCAP_setStopWrap(myCap, CAP_Stop_Wrap_CEVT4);// Stop at 3 eventsCAP_setCapEvtPolarity(myCap, CAP_Event_1, CAP_Polarity_Rising); // 捕获上升沿CAP_setCapEvtPolarity(myCap, CAP_Event_2, CAP_Polarity_Falling); // 捕获下降沿CAP_setCapEvtPolarity(myCap, CAP_Event_3, CAP_Polarity_Rising); // 捕获上升沿CAP_setCapEvtReset(myCap, CAP_Event_3, CAP_Reset_Enable); // 重置计数器确保计数器不会溢出CAP_enableTimestampCounter(myCap); // 打开计数器 CAP_enableCaptureLoad(myCap); // Enable CAP1-CAP4 register loads/* CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3个捕获点之后发生中断// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&ecap1_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT: CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);*/}void MY_CAP_INT_config(void){CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3 events = interrupt// Register interrupt handlers in the PIE vector table PIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&MY_CAP_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT:CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6 PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);}// end of file/*MY_CAP、h*/#ifndef _MY_CAP_H_#define _MY_CAP_H_// the includes#include<stdint、h>// driver#include"F2802x_Component/F2802x_Device、h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_CAP_initial(void);TARGET_EXT void MY_CAP_config(void);TARGET_EXT void MY_CAP_INT_config(void);TARGET_EXT interrupt void MY_CAP_isr(void); //redefined in Isr、h/*-------end of hardware description -------------*/TARGET_EXT int NOW_PWM;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑤/*mySci、c*/// the includes#include"User_Component/mySci/mySci、h"// the functions// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] Nonevoid SCI_initial(void){}////! \brief SCI configure//! \param[in] None//! \param[out] Nonevoid SCI_config(void){ //1、 GPIO configure//1、1 pullupGPIO_setPullUp(myGpio, GPIO_Number_28, GPIO_PullUp_Enable); GPIO_setPullUp(myGpio, GPIO_Number_29, GPIO_PullUp_Disable);//1、2 input qualificationGPIO_setQualification(myGpio, GPIO_Number_28, GPIO_Qual_ASync);//1、3 modeGPIO_setMode(myGpio, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);//SCI数据发送引脚GPIO_setMode(myGpio, GPIO_Number_29, GPIO_29_Mode_SCITXDA);//SCI数据接收引脚//2、 enable SCIA clkCLK_enableSciaClock(myClk);//3、 configure the low speed peripheral clock(LSPCLK) LSPCLK = SYSCLKOUT/4 =15MHzCLK_setLowSpdPreScaler(myClk,CLK_LowSpdPreScaler_SysClkOut_by_4);//设置时钟分频//4、 SCI BRR = LSPCLK/(SCI BAUDx8) - 1SCI_setBaudRate(mySci, SCI_BaudRate_9_6_kBaud);//设置波特率为9600//5、 configure package(1 stop bit, No loopback, No parity,8 char bits, async mode, idle-line protocol)SCI_disableParity(mySci);SCI_setNumStopBits(mySci, SCI_NumStopBits_One);SCI_setCharLength(mySci, SCI_CharLength_8_Bits);//6、 enable SCI TX&RXSCI_enableTx(mySci);SCI_enableRx(mySci);//7、configure the SCI TX&RX FIFO//7、1 enable FIFO//先进先出SCI_resetChannels(mySci);SCI_enableFifoEnh(mySci);//7、2 configure TX FIFOSCI_resetTxFifo(mySci);//7、3 configure RX FIFOSCI_resetRxFifo(mySci);//8、 enable SCI moduleSCI_enable(mySci);}//! \brief Transmit a string from the SCI//! \param[in] string//! \param[out] Nonevoid scia_msg(char * msg){int i;i = 0;while(msg[i] != '\0'){scia_xmit(msg[i]);i++;}}//! \brief Transmit a char from the SCI//! \param[in] char//! \param[out] Nonevoid scia_xmit(int a){while(SCI_getTxFifoStatus(mySci) != SCI_FifoStatus_Empty) {} SCI_putDataBlocking(mySci, a);}//! \brief Receive a char from the SCI//! \param[in] None//! \param[out] a:receive data//! 00: no received /00: receivedint scia_receive(uint16_t *a){if(SCI_getRxFifoStatus(mySci) < SCI_FifoStatus_1_Word){ return 0;}else{*a = SCI_getData(mySci);}return 1;}// end of file/*mySci、h*//#ifndef _MYSCI_H_#define _MYSCI_H_//************************************************************** ************// the includes#include<stdint、h>// driver#include"F2802x_Component/F2802x_Device、h"#include"User_Component/User_Mcu/User_System、h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*///// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] NoneTARGET_EXT void SCI_initial(void);////! \brief SCI configure//! \param[in] None//! \param[out] NoneTARGET_EXT void SCI_config(void);///*******************************************///! \brief Interrup configure//! \param[in] None//! \param[out] None//TARGET_EXT void SCI_INT_config(void);////! \brief CPU Timer0 Interrupt Service Routine//! \param[in] None//! \param[out] None//TARGET_EXT interrupt void SCI_isr(void); //redefined in Isr、h/*-------end of hardware description -------------*/TARGET_EXT void scia_msg(char * msg);TARGET_EXT void scia_xmit(int a);TARGET_EXT int scia_receive(uint16_t *a);/*-------end of API description -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑥/*User_System、c*/#include"User_Component/User_Mcu/User_System、h"// system initialvoid System_initial(void){}void System_config(void) //system config{//0、myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));myWDog = WDOG_init((void*)WDOG_BASE_ADDR, sizeof(WDOG_Obj)); myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));myGpio = GPIO_init((void*)GPIO_BASE_ADDR, sizeof(GPIO_Obj));myPie = PIE_init((void*)PIE_BASE_ADDR, sizeof(PIE_Obj)); //中断指针赋值myTimer0 = TIMER_init((void*)TIMER0_BASE_ADDR, sizeof(TIMER_Obj)); // CPU Timer0myPwm1 = PWM_init((void*)PWM_ePWM1_BASE_ADDR, sizeof(PWM_Obj)); // PWM1myPwm2 = PWM_init((void*)PWM_ePWM2_BASE_ADDR, sizeof(PWM_Obj)); // PWM2myAdc = ADC_init((void *)ADC_BASE_ADDR, sizeof(ADC_Obj));mySci = SCI_init((void*)SCIA_BASE_ADDR, sizeof(SCI_Obj)); // SCIAmyCap = CAP_init((void *)CAPA_BASE_ADDR, sizeof(CAP_Obj));// 1、 disable watch DOGWDOG_disable(myWDog);// 2、 disable interruptCPU_disableGlobalInts(myCpu);// 3、 Select the internal oscillator 1(10MHz) as the clock sourceCLK_setOscSrc(myClk, CLK_OscSrc_Internal);// 4、 Setup the PLL for x12 /2 which will yield 60Mhz = 10Mhz * 12 / 2PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);// 5、 PIE configurePIE_disable(myPie); //禁止PIEPIE_disableAllInts(myPie); //禁止PIE中断CPU_disableGlobalInts(myCpu);//CPU全局中断禁止CPU_clearIntFlags(myCpu); //CPU 中断标志位清零PIE_setDefaultIntVectorTable(myPie); //中断入口地址赋予默认值PIE_enable(myPie); //使能PIE}void SystemINT_start(void) //User PIE start{// (8)。

相关文档
最新文档