嵌入式系统参考资料
嵌入式开发参考书籍

嵌入式开发参考书籍
1. 《嵌入式系统设计与应用》(作者,Raj Kamal),这本书涵盖了嵌入式系统的基础知识、硬件和软件设计、实时操作系统以及嵌入式系统的应用。
它适合初学者和有一定基础的读者,内容全面,易于理解。
2. 《嵌入式系统原理与实践》(作者,黄仁宇、李春光),该书介绍了嵌入式系统的基本原理、嵌入式处理器、嵌入式系统的软硬件设计等内容,结合了理论和实践,适合想要深入了解嵌入式系统的读者。
3. 《ARM Cortex-M权威指南》(作者,Joseph Yiu),这本书深入介绍了ARM Cortex-M处理器架构和编程技术,对于想要学习ARM架构的嵌入式开发人员来说是一本非常有用的参考书籍。
4. 《嵌入式C编程与应用》(作者,Colin Walls),该书介绍了嵌入式C编程的基础知识、实时操作系统、调试技术等内容,适合想要深入学习嵌入式C编程的读者。
5. 《嵌入式系统设计》(作者,Peter Marwedel),这本书介
绍了嵌入式系统的设计方法、实时系统、功耗优化等内容,对于想要系统地学习嵌入式系统设计的读者来说是一本不错的选择。
以上推荐的书籍涵盖了嵌入式系统设计、嵌入式处理器架构、嵌入式C编程等多个方面,读者可以根据自己的需求和兴趣选择适合自己的参考书籍。
希望这些推荐能够帮助你更好地学习和实践嵌入式开发。
嵌入式系统原理及应用课后答案

嵌入式系统原理及应用课后答案
嵌入式系统是一种专门针对特定应用领域设计的计算机系统,
它通常被嵌入到各种设备中,以实现特定的功能。
嵌入式系统的应
用范围非常广泛,涉及到汽车、家电、医疗设备、工业控制等诸多
领域。
在现代社会中,嵌入式系统已经成为各种智能设备的核心,
其重要性不言而喻。
嵌入式系统的原理主要包括硬件和软件两个方面。
在硬件方面,嵌入式系统通常采用专用的微处理器或微控制器作为核心处理器,
配合各种外围设备,如存储器、输入输出设备等,构成完整的系统。
而在软件方面,嵌入式系统的软件通常由嵌入式操作系统和应用程
序组成,其中嵌入式操作系统具有实时性和高效性的特点,能够保
证系统的稳定运行。
在嵌入式系统的应用中,我们需要考虑的问题非常多。
首先,
我们需要充分了解所涉及的应用领域,明确系统的功能和性能需求。
其次,我们需要选择合适的硬件平台和软件开发工具,以确保系统
能够满足需求。
最后,我们需要进行系统的设计和实现,同时进行
充分的测试和调试,以保证系统的稳定性和可靠性。
对于嵌入式系统的开发人员来说,需要具备扎实的硬件和软件知识,同时需要具备良好的团队合作和沟通能力。
此外,对于特定领域的应用,还需要具备相关的专业知识,以确保系统能够满足特定领域的需求。
总的来说,嵌入式系统的原理及应用涉及到硬件、软件、应用领域等诸多方面,需要开发人员具备全面的知识和技能。
只有不断学习和积累经验,才能够在嵌入式系统领域取得成功。
希望通过本文的介绍,能够对嵌入式系统的原理及应用有更深入的了解,为相关领域的开发工作提供一定的帮助。
嵌入式系统参考文献

嵌入式系统参考文献嵌入式系统:体系结构、编程设计——国外计算机科学经典教材作者:(印度)卡莫尔(Kamal,R.)编著,陈曙晖等译出版社:清华大学出版社2005-5-1内容简介本书是嵌入式系统的基础教程,主要面向初级系统设计人员。
书中详细介绍了嵌入式系统最基本的软件和硬件要素,以及将代码嵌入到系统中的一些软件技术和接口技术。
本书主要特色:全面介绍了嵌入式系统的编程原理、OS、RTOS函数和进程间同步;单处理器和多处理器系统的程序建模和软件设计实践;同时涵盖两种实时操作系统——mC/OS-II和VxWorks;提供了关于消费电子产品、通信、汽车电子产品和片上安全事务系统的案例研究,同时阐述了RTOS编程原理;每章包括插图、示例、关键词及其定义、问题回顾和实践练习;Java 2 Micro版本的使用针对手持设备的嵌入式C++编程,嵌入式软件的C语言编程。
FPGA嵌入式系统设计作者:孟宪元,钱伟康编著出版社:电子工业出版社20071001本书基于全球最大的可编程器件生产厂商美国Xilinx公司的系列FPGA产品,系统介绍了最新FPGA的内部结构、设计流程和ISE8.1i开发工具;全面介绍了FPGA实现嵌入式系统的基本原理和利用FPGA实现嵌入式系统的设计方法。
在详细介绍硬件描述语言VHDL的基础上,如何利用VHDL语言设计数字系统,通过综合在FPGA上实现所设计系统的功能;利用可执行技术条件基于模型的设计方法,对设计的DSP系统进行建模、仿真和优化,以及通过代码生成,自动转换到硬件实现的过程;利用嵌入式处理器软核构造和裁剪嵌入式系统的设计方法,在单个FPGA芯片上利用软、硬件协同设计的方法,合理地配置资源,实现多处理器的嵌入式系统。
本书立足于工程实践,结合作者多年嵌入式系统和可编程逻辑器件的开发和教学经验,内容丰富,取材新颖,可为相关专业工程技术人员、研究生在设计和使用嵌入式系统时提供参考,也可作为高等学校电子电气信息类、仪器仪表类、自动化类及其他相关专业高年级本科生的教学参考书。
嵌入式实验报告参考文献

[1] 杨晨,李晓光,张勇. 嵌入式系统原理与应用实验报告——定时器TIMx实验[J]. 嵌入式系统学报,2023,16(2):1-10.[2] 张伟,王明,刘洋. 嵌入式系统原理与应用实验报告——GPIO实验[J]. 嵌入式系统学报,2023,16(2):11-20.[3] 李明,张华,刘晓燕. 嵌入式软件开发技术实验报告[J]. 计算机应用与软件,2018,35(5):1-5.[4] 王晓东,陈明,刘强. 嵌入式上传与下载实验的总结[J]. 计算机应用与软件,2019,36(1):1-4.[5] 刘畅,陈勇,李丹. 嵌入式实验报告总结[J]. 计算机应用与软件,2020,37(2):1-5.[6] 张军,李伟,刘洋. 嵌入式系统实验报告总结.docx[J]. 计算机应用与软件,2019,36(4):1-4.[7] 张强,王磊,赵伟. 嵌入式系统设计实验报告[J]. 计算机应用与软件,2018,35(3):1-5.[8] 刘洪,张伟,李强. 嵌入式系统原理与应用实验报告——LED发光二极管实验[J]. 计算机应用与软件,2017,34(6):1-5.[9] 李鹏,张勇,赵强. 嵌入式系统原理与应用实验报告——GPIO(按键和LED)实验[J]. 计算机应用与软件,2016,33(5):1-5.[10] 王磊,李明,张华. 嵌入式系统原理与应用实验报告——基于STM32F103微控制器的嵌入式系统实验[J]. 计算机应用与软件,2015,32(4):1-5.[11] 陈勇,刘畅,李丹. 嵌入式系统原理与应用实验报告——流水灯实验[J]. 计算机应用与软件,2014,31(3):1-5.[12] 刘洋,张强,王磊. 嵌入式系统原理与应用实验报告——基于MDK-ARM的GPIO实验[J]. 计算机应用与软件,2013,30(2):1-5.[13] 赵伟,张军,李伟. 嵌入式系统原理与应用实验报告——基于UP-CUP6410-II型平台的Linux开发环境配置[J]. 计算机应用与软件,2012,29(1):1-5.[14] 李强,刘洪,张伟. 嵌入式系统原理与应用实验报告——基于IAR Embedded Workbench for MCS-51的GPIO实验[J]. 计算机应用与软件,2011,28(6):1-5.[15] 张勇,李鹏,赵强. 嵌入式系统原理与应用实验报告——基于STM32F103微控制器的流水灯实验[J]. 计算机应用与软件,2010,27(4):1-5.以上参考文献涵盖了嵌入式系统原理与应用、嵌入式系统实验报告、嵌入式软件开发技术、嵌入式系统设计实验、嵌入式系统实验报告总结等多个方面的内容,为撰写嵌入式实验报告提供了丰富的理论支持和实践指导。
嵌入式系统教案李震

嵌入式系统教案李震一、教案概述本教案旨在为广大嵌入式系统学习者提供一个全面、系统的学习路线,通过讲解基本概念、原理及实际应用,使学习者能够熟练掌握嵌入式系统的基本知识,具备实际项目开发能力。
本教案适用于嵌入式系统及相关专业的本科生、研究生和从业人员。
二、教学目标1. 理解嵌入式系统的概念、特点和应用领域;2. 掌握嵌入式系统硬件平台的基本组成;3. 熟悉嵌入式操作系统的基本原理及常用嵌入式操作系统;4. 学会嵌入式系统软件开发的基本方法;5. 能够运用所学知识分析和解决实际嵌入式系统问题。
三、教学内容第一章:嵌入式系统概述1.1 嵌入式系统的定义及特点1.2 嵌入式系统的应用领域1.3 嵌入式系统的发展趋势第二章:嵌入式系统硬件平台2.1 嵌入式处理器2.2 存储器2.3 输入输出接口2.4 嵌入式系统硬件设计方法第三章:嵌入式操作系统3.1 嵌入式操作系统的基本原理3.2 常用嵌入式操作系统简介3.3 嵌入式操作系统的选择与评估第四章:嵌入式系统软件开发4.1 嵌入式软件开发流程4.2 嵌入式编程语言4.3 嵌入式软件调试与测试第五章:嵌入式系统项目实践5.1 嵌入式系统项目开发流程5.2 基于嵌入式系统的应用案例分析5.3 项目实践案例讲解四、教学方法1. 采用讲授、讨论、实验相结合的方式进行教学;2. 使用实际案例进行分析,使学生更好地理解嵌入式系统的应用;3. 鼓励学生进行项目实践,提高实际动手能力;4. 定期进行课后作业和测试,检查学生学习效果。
五、教学资源1. 教材:《嵌入式系统原理与应用》等;2. 实验设备:嵌入式开发板、编程器、仿真器等;3. 网络资源:相关技术博客、论坛、学术论文等。
六、课程评估1. 课后作业:考察学生对课堂所学知识的理解和运用;2. 实验报告:评估学生在实验过程中的动手能力和问题解决能力;3. 课程论文:考察学生对嵌入式系统某一领域的深入研究;4. 期末考试:全面测试学生对本门课程的掌握程度。
嵌入式系统编程与开发课程大纲

嵌入式系统编程与开发课程大纲一、课程简介嵌入式系统是指内嵌在设备或系统中,具有特定功能并与外部环境交互的计算机系统。
本课程旨在介绍嵌入式系统的编程和开发方法,培养学生在嵌入式系统领域的基本能力和专业知识。
二、课程目标本课程的目标是使学生能够:1. 理解嵌入式系统的概念、原理和应用场景;2. 掌握嵌入式系统的编程语言、开发工具和方法;3. 熟悉嵌入式系统的硬件平台和接口技术;4. 能够进行简单的嵌入式系统设计、开发和测试。
三、课程大纲1. 嵌入式系统概述1.1 嵌入式系统的定义和特点1.2 嵌入式系统的应用领域2. 嵌入式系统硬件平台2.1 嵌入式处理器架构和选择2.2 嵌入式系统的外围设备和接口3. 嵌入式系统编程语言3.1 C语言在嵌入式系统中的应用3.2 C++语言在嵌入式系统中的应用4. 嵌入式系统开发工具及环境4.1 嵌入式系统开发环境搭建4.2 常用的嵌入式系统开发工具5. 嵌入式系统软件开发流程5.1 嵌入式系统软件开发的基本流程 5.2 软件需求分析和规格说明5.3 软件设计和架构6. 嵌入式系统驱动程序开发6.1 嵌入式系统驱动程序的概念和作用6.2 常见的外围设备驱动程序开发7. 嵌入式系统应用开发实践7.1 嵌入式系统应用开发的基本方法7.2 常见的嵌入式系统应用开发案例8. 嵌入式系统调试和测试8.1 嵌入式系统调试和测试的方法和技巧8.2 嵌入式系统软件测试的常用工具和技术9. 嵌入式系统安全性和可靠性9.1 嵌入式系统的安全性需求和挑战9.2 嵌入式系统的可靠性设计和实施四、评估方式1. 平时成绩(出勤、作业、实验报告等)占40%2. 期中考试成绩占30%3. 期末项目成绩占30%五、教材与参考资料1. 教材:《嵌入式系统设计与开发》2. 参考资料:[1] 《嵌入式系统开发实战指南》[2] "Embedded Systems: Architecture, Programming and Design" by Raj Kamal六、教学团队本课程由经验丰富的嵌入式系统工程师和专家担任教师,具备相关行业背景和实践经验,能够为学生提供专业的指导和培训。
嵌入式考试试题

嵌入式试题资料参考1、以下说法不正确的是(2 )。
A、任务可以有类型说明B、任务可以返回一个数值C、任务可以有形参变量D、任务是一个无限循环2下列描述不属于计算机的特点的是(3)。
A.流水线每周期前进一步。
B.更多通用寄存器。
C.指令长度不固定,执行需要多个周期。
D.独立的和指令完成数据在寄存器和外部存储器之间的传输。
3存储一个32位数0x2168465到2000H〜2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为(4)。
A、0x21B、0x68C、0x65D、0x024u中对关键代码段由于希望在执行的过程中不被中断干扰,通常采用关中断的方式,以下X86汇编代码正确而且不会改变关中断之前的中断开关状态的是(4)A.先、执行关键代码、再B.先、执行关键代码、再C.先、、执行关键代码、再D.先、、执行关键代码、再。
5232串口通信中,表示逻辑1的电平是(4 )。
A、0vB、3.3vC、+5v〜+ 15vD、一5v〜一15v6汇编语句“ R0, R2, R3, 1”的作用是()。
A. R0 = R2 +(R3 << 1)B. R0=(R2<< 1) + R3C. R3= R0+ (R2 << 1)D. (R3 << 1)= R0+ R27中断的入口地址是()。
的入口地址为0x0000001CA、0x00000000B、000000008 、0x00000018 D 、0x000000148 S3C2420X 口常用的控制器是()。
(1)端口控制寄存器()。
(2)端口数据寄存器()。
(3)外部中断控制寄存器()。
(4)以上都是。
9实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴发来信息,或建立某个条件后再向前执行,这种制约性合作关系被成为()。
A.同步B.互斥C.调度D.执行10和系统机相比嵌入式系统不具备以下哪个特点()。
嵌入式系统设计文档

嵌入式系统设计文档结构示例嵌入式系统设计文档是一个详细说明嵌入式系统如何设计和实现的文件。
这个文档通常包括系统的硬件和软件方面的描述,以及系统的功能、性能、接口和其他重要方面的详细信息。
以下是一个典型的嵌入式系统设计文档可能包含的主要部分:1. 引言-简要介绍嵌入式系统的目的和范围。
-提供系统概述,包括主要功能和特性。
2. 系统架构-描述系统的整体结构,包括硬件和软件组件。
-列出各个组件之间的关系和通信方式。
3. 硬件设计-详细描述嵌入式系统的硬件部分,包括处理器、存储器、传感器、执行器等。
-提供硬件电路图、布局图和原理图。
4. 软件设计-描述系统的软件架构,包括操作系统、驱动程序、应用程序等。
-说明软件模块之间的交互和通信。
5. 接口定义-定义系统内部和外部的各种接口,包括硬件接口和软件接口。
-详细说明接口的功能、通信协议和数据格式。
6. 功能需求-列出系统的功能需求,包括主要功能和次要功能。
-对每个功能进行详细的说明,包括输入、输出和处理逻辑。
7. 性能需求-定义系统的性能指标,如响应时间、吞吐量、稳定性等。
-说明如何测试和验证系统的性能。
8. 安全性-描述系统的安全性要求和措施,包括数据保护、访问控制等方面。
-讨论系统对潜在威胁的响应和应对策略。
9. 测试和验证-描述系统测试的方法和策略,包括单元测试、集成测试和系统测试。
-提供测试计划和测试用例。
10. 维护和支持-提供系统维护和支持的计划,包括软件更新、硬件维护和故障排除。
11. 参考资料-包括用于设计和实现的所有参考资料,如规范、标准和相关文档。
这只是一个一般性的嵌入式系统设计文档的结构示例,具体的内容和结构可能会根据项目的特定要求和规模而有所不同。
在编写文档时,确保清晰、详细地记录系统的各个方面,以便团队成员和其他利益相关方能够理解和有效地实施系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.画出基于ARM-Cortex M3内核最小系统的电路图,并进行简要说明启动引脚所对应的启动模式。
(10分)答:(1)最小系统的电路图,能正确画出图或者用文字描述得(6分)(2)启动模式说明,能正确画出图或者用文字描述得(4分)2.画出基于CMSIS标准的应用程序的基本结构,并简述其所包含的三个基本功能层。
(10分)答:(1)基于CMSIS标准的应用程序的基本结构,能正确画出图或者用文字描述得(7分)(2)CMSIS标准的三个基本功能层:(3分)1. 内核设备访问层:包含用于访问内核寄存器设备的名称定义、地址定义和助手函数。
同时也为RTOS定义了独立于微控制器的接口,该接口包括调试通道定义。
2.中间设备访问层:为软件提供了访问外设的通用方法。
芯片供应商应当修改中间设备访问层,对于中间设备访问层,芯片厂商需要根据自己的设备特性进行更新。
3.微控制器外设访问层:提供了片上所有外设的定义。
3. 画出STM32内部的总线结构。
并简要说明AHB总线与SRAM、DMA及APB总线之间的关系。
(10分)答:(1)能正确画出图或者用文字描述得6分。
(2)AHB总线与SRAM、DMA及APB总线之间的关系(4分):STM32的内部SRAM和DMA单元直接与AHB总线相连,外部设备则使用两条APB总线相连,每一条APB总线又都与AHB总线矩阵相连。
4. 在基于ARM-Cortex M3内核的芯片上编写程序实现如下功能。
通过GPIO口引脚实现2个LED 灯交替实现闪烁,2个灯持续时间闪烁时间持续为1秒。
(25分)1) 画出所需要的电路图。
(5分)2) 画出程序的流程图。
(5分)3) 配置Systick定时器,并使用Systick定时器实现1秒钟的延时功能,写出相应的程序。
(5分)方法:1:SysTick_Config(72000000/ 2000);void Delay(uint32_t nTime){TimingDelay = nTime;while(TimingDelay != 0);}void TimingDelay_Decrement(void){if (TimingDelay != 0x00){TimingDelay--;}}方法2:Systick_Configuration();void Systick_Configuration(void){/* 失能Systick定时器 */SysTick_CounterCmd(SysTick_Counter_Disable);/* 选择HCLK为Systick时钟源 */SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);/* 清除Systick计数器 */SysTick_CounterCmd(SysTick_Counter_Clear);/* 主频为72/8MHz,配置计数值为9000 * 1000可以得到1s定时间隔*/ SysTick_SetReload(9000 * 1000);}void Delay_Second(void){/* 启动Systick计数 */SysTick_CounterCmd(SysTick_Counter_Enable);/* 等待Systick计数至0 */while(SysTick_GetFlagStatus(SysTick_FLAG_COUNT) == 0);/* 失能Systick定时器 */SysTick_CounterCmd(SysTick_Counter_Disable);/* 清除Systick计数器 */SysTick_CounterCmd(SysTick_Counter_Clear);}4) 写出整个交替LED灯闪烁的程序。
(10分)#include "stm32f10x_lib.h"void RCC_Configuration(void);void GPIO_Configuration(void);void Systick_Configuration(void);void Delay_Second(void);int main(void){RCC_Configuration();GPIO_Configuration();/* 设置SyTtick定时器*/Systick_Configuration();while(1){GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4)));//翻转GPIOA.4电平Delay_Second(); //见前面的systick延时}}void RCC_Configuration(void){/* 定义枚举类型变量HSEStartUpStatus */ErrorStatus HSEStartUpStatus;/* 复位系统时钟设置*/RCC_DeInit();/* 开启HSE*/RCC_HSEConfig(RCC_HSE_ON);/* 等待HSE起振并稳定*/HSEStartUpStatus = RCC_WaitForHSEStartUp();/* 判断HSE起是否振成功,是则进入if()内部*/if(HSEStartUpStatus == SUCCESS){/* 选择HCLK(AHB)时钟源为SYSCLK 1分频*/RCC_HCLKConfig(RCC_SYSCLK_Div1);/* 选择PCLK2时钟源为HCLK(AHB)1分频*/RCC_PCLK2Config(RCC_HCLK_Div1);/* 选择PCLK1时钟源为HCLK(AHB)2分频*/RCC_PCLK1Config(RCC_HCLK_Div2);/* 设置FLASH延时周期数为2 */FLASH_SetLatency(FLASH_Latency_2);/* 使能FLASH预取缓存*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为8MHz * 9 = 72MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* 使能PLL */RCC_PLLCmd(ENABLE);/* 等待PLL输出稳定*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);/* 选择SYSCLK时钟源为PLL */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* 等待PLL成为SYSCLK时钟源*/while(RCC_GetSYSCLKSource() != 0x08);}/* 打开APB2总线上的GPIOA时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);}void GPIO_Configuration(void){/* 定义GPIO初始化结构体GPIO_InitStructure */GPIO_InitTypeDef GPIO_InitStructure;/* 设置GPIOA.4 为推挽输出,最大翻转频率为50MHz*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);}5.在基于ARM-Cortex M3内核的芯片上编写程序实现如下功能。
使用按键与芯片管脚相连,配置两个外部中断,实现在中断0中,通过USART口,输出一个字符串。
例如:interrupt 0;在中断1中,通过USART口,输出一个字符串。
例如:interrupt 1;执行顺序是先是中断0,然后是中断1。
(1)画出所需要的电路图。
(5分)(2)画出程序的流程图。
(5分)(3)配置串口USART1,实现通过串口向PC机的串口助手打印一个字符串。
例如:interrupt 0。
写出相应的程序。
(5分)在KEIL C Target option -> target中选择 useMicroLIBvoid GPIO_Configuration(void){/* 定义 GPIO 初始化结构体 GPIO_InitStructure */GPIO_InitTypeDef GPIO_InitStructure;/* 设置USART1的Tx脚(PA.9)为第二功能推挽输出模式 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA , &GPIO_InitStructure);/* 设置USART1的Rx脚(PA.10)为浮空输入脚 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA , &GPIO_InitStructure);}void USART_Configuration(void){USART_InitTypeDef USART_InitStructure;USART_ART_BaudRate = 9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;USART_ART_Parity = USART_Parity_No ;USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1 , &USART_InitStructure);USART_Cmd(USART1 , ENABLE);}int fputc(int ch,FILE *f){USART_SendData(USART1,(unsigned char)ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);return ch;}printf("\r\n interrupt 0");(4)写出整个外部中断以及串口输出的程序。