武汉理工大学华夏学院
专业方向课程设计报告书
项 目 名 称 利用 PWM 定时器实现蜂鸣器控制
课程设计总评成绩
学生姓名、学 号
王雨田 10211810213
学 生 专 业 班级
电信 1102
指 导 教 师 姓名
课程设计起止日期
课程设计基本要求
专业方向课程设计是十分重要的实践教学环节,通过专业方向课程设计,培
养学生综合运用所学理论知识和专业技能,以项目为导向解决工程领域的实际问
题。课程设计报告是科学论文写作的基础,报告可以以小论文的形式提交。
1. 专业方向课程设计内容包括项目设计方案论证、项目设计与结果分析、答
辩等环节,每个环节都应有一定的考核要求和考核成绩。
2. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最
佳方案,项目设计要求按选择的方案进行硬件设计或软件编程。
4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性
能指标的正确性和完整性,软件运行情况和效果分析,故障或错误原因的分析和
处理方法。
5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自
己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。文献阅读
摘要记录于课程设计报告书中。
6. 答辩是课程设计中十分重要的环节,由课程设计指导教师向答辩学生提出
2~3 个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际技能掌握
的程度,以及对问题的理解、分析和判断能力。
7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计
报告书。课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成
存档交实验室统一管理。
专业方向课程设计任务书
(嵌入式方向)
学生姓名:
指导教师:
王雨田
专业班级: 电信 1102
工作单位: 信息工程系
题 目: 利用 PWM 定时器实现蜂鸣器控制
基础条件:
1. ARM 开发教学设备;
2. PC 机及相关应用软件;
要求完成的主要任务:
1、了解 ARM 处理器的定时器使用方法;
2、了解如何改变 PWM 占空比来实现蜂鸣器声音的变化;
3、撰写课程设计说明书。
4、课程设计说明书要求:引言、设计要求、系统结构、原理设计、各个模块
的设计与实现、软件设计、调试过程、体会及总结、参考文献、源程序。说明书
使用 A4 纸打印或手写。
时间安排:
第 15 周 下达课程设计任务书和日程安排,根据任务书查找资料;
第 16 周 了解 ARM 处理器的定时器使用方法,了解如何改变 PWM 站空比来实
现蜂鸣器声音的变化;
第 17 周 设计出初步方案,根据设计方案编写程序实现 PWM 对蜂鸣器声音变
化的控制,并根据要求完成对程序的调试;
第 18 周 结果分析整理、撰写课程设计报告,验收和答辩。
指导教师签名:
年
月 日
(摘要 200 字左右,采用 5 号字,楷体;摘要要求写“目的。
摘 要
近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速
普及和 3C(计算机、通信、消费电子)合一的加速,微型化和专业化成为发展的新
趋势,嵌入式产品成为信息产业的主流。Linux 从 1991 年问世到现在,短短的
十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行
在 X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM 等多种硬件平台,
而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业
和研发机构都转向嵌入式 Linux 的开发和研究上,在新兴的嵌入式操作
系统领域内也获得了飞速发展。
关键词:嵌入式,Linux, 操作系统, 嵌入式应用软件。
一、设计的总体目的与功能
1、 了解 ARM 处理器的定时器使用方法;
2、 了解如何改变 PWM 占空比来实现蜂鸣器声音的变化;
二、方案论证(可行性方案、系统实现方案)
一、S3C2440PWM 定时器概述
1, PWM ( Pulse Width Modulation ) —— 脉宽调制
它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、
通信、功率控制与变换等许多领域 。
2 ,S3C2440A 有 5 个 16 位定时器。
其中定时器 0、1、2 和 3 具有脉宽调制(PWM)功能。定时器 4 是一个无输出引脚的内部定
时器。定时器 0 还包含用于大电流驱动的死区发生器。 定时器 0 和 1 共用一个 8 位预分频器,
定时器 2、3 和 4 共用另外的 8 位预分频器。每个定时器都有一个可以生成 5 种不同分频信号
(1/2,1/4,1/8,1/16 和 TCLK)的时钟分频器。每个定时器模块从相应 8 位预分频器得到时钟
的时钟分频器中得到其自己的时钟信号。8 位预分频器是可编程的,并且按存储在 TCFG0 和
TCFG1 寄存器中的加载值来分频 PCLK。
定时计数缓冲寄存器(Tinton)包含了一个当使能了定时器时的被加载到递减计数器中的初始值。
定时比较缓冲寄存器(TCMPBn)包含了一个被加载到比较寄存器中的与递减计数器相比较的初
始值。这种 TCNTBn 和 TCMPBn 的双缓冲特征保证了改变频率和占空比时定时器产生稳定的输
出。
每个定时器有自己的 16bit down-counter(递减计数器),由定时器时钟驱动.当 down-counter 为 0,
定时器中断请求产生来通知 CPU 定时器操作以及完成了.当定时器的计数器为 0,相关的 TCNTBn
的值会自动的加载到 down-counter 中来继续下一次操作.然而,当定时器停止,比如在定时器运行中
清除 TCONn 的定时器使能位,TCNTBn 不会重加载到计数器中。
TCMPBn 的值被用于 PWM.当 down-counter 的值与比较寄存器的值吻合时,定时器控制逻辑会改
变输出电平.所以比较寄存器决定 PWM 输出的打开时间.
二、PWM 定时器操作
1 ,预脉冲分频器 & 时钟分频器
一个定时器(除了第5个定时器)有 TCNTBn, TCNTn, TCMPBn 和 TCMPn.(TCNTn 和 TCMPn
是内部寄存器名字,TCNTn 寄存器能从 TCNTOn 寄存器中读取)当定时器为 0 时,TCNTn 和
TCMPn 从 TCNTBn 和 TCMPBn 寄存器中加载值。当 TCNTn 到 0 时,如果中断使能了,将出现
一个中断请求。
2,自动加载 和 双缓冲
S3C2440A PWM 定时器有双缓冲功能。可以在不停止当前定时器的情况下设置下一轮的定时操
作。因此,虽然新的定时器的值被设置了,当前定时器操作可以成功的完成。定时器的值可以写
到 TCNTBn,而当前定时器的计数值可以从 TCNTOn 获得。即,从 TCNTBn 获得的不是当前数
值而是下一次计数的初始值。
当 TCNTn 达到 0 时,TCNTn 自动加载 TCNTBn 中的值。仅仅当 TCNTn 的值递减到 0 且自动
加载使能的时候,TCNTBn,中的值会被加载到 TCNTn。如果 TCNTn 的值递减到 0 且自动加载位
是 0,TCNTn 不会在任何缓冲中操作。
当 down-counter 为 0,定时器的自动重加载操作就会动作.所以 user 要预先定义 TCNTn 的初始值.
在这种情况下,初始值通过手动更新位进行加载.下面的步骤描述如何启动一个定时器:
1.向 TCNTBn 和 TCMPBn 中写初始值
2.设置定时器的手动更新位.推荐配置 inverter on/off bit(不管用不用)
3.设置定时器的开始位来启动定时器(同时清除手动更新位)
如果定时器被强行停止,TCNTn 保持计数器的值而且不会从 TCNTBm 中重加载.如果要设置一个
新值,要执行手动更新.
注意:不论何时 TOUT inverter on/off bit 被更改,在定时器运行时 TOUTn 的逻辑值都会改变.因此,
最好在配置手动更新位的时候配置 inverter on/off bit.
三、脉冲调制宽度(PWM)
通过使用 TCMPBn 来实现 PWM 功能.PWM 的频率由 TCNTBn 来决定.减少 TCMPBn 的值可以有
更高的 PWM 值.增加 TCMPBn 的值可以有更低的 PWM 值.如果输出反转使能了,增加和减少操作
也要反转。双缓冲功能允许在 ISR 中将下一次 PWM 的 TCMPBn 的值在当前 PWM 的周期的任何
一个时间点被写入.
四、输出电平控制
假定反转功能是关闭的,下面的步骤描述如何保证 TOUT 是高还是低:
1.关闭自动重加载位.TOUTn 是高电平,当 TCNTn 为 0 时定时器停止.
2.通过清除定时器的开始位来停止定时器.如果 TCNTn<=TCMPn,输出高;如果 TCNTn>TCMPn,输
出低.
3.可以通过 TCON 的反转开关来决定 TOUT 是否反转.反转器会移除额外的电流来适应输出电平.
五、PWM 的控制
最后就是对 PWM 的控制,它是通过寄存器 TCON 来实现的,一般来说每个定时器主要有 4 个位
要配置(定时器 0 多一个死区位):
1,启动/终止位,用于启动和终止定时器;
2,手动更新位,用于手动更新 TCNTBn 和 TCMPBn,这里要注意的是在开始定时时,一定要把这
位清零,否则是不能开启定时器的;