微机原理实验报告
实验名称: 定时器输入捕获实验 院 系:物理与机电工程学院 专业班级: 08电子信息工程 学 号: 学生姓名: 指导教师: 涂二生 完成时间:报告成绩:
定时器输入捕获实验
一、实验目的:
掌握使用定时器以及所涉及的寄存器的使用方法,学会程序的书写和使用。 本次实验对程序进行修改使原来CAP1.2下降沿改为CAP1.3下降沿。将GPIO特殊应用加入程序中,使用LEDS8分奇数和偶数点亮;在LED灯亮的同时蜂鸣器随着蜂鸣。
二、实验器材:
电脑一台,ARM7实验开发板,AXD仿真软件 三、实验原理:
使用定时器1的输入捕获功能,获取延时参数,用于控制LEDS8的闪烁频率。程序首先设置P0.18引脚连接CAP1.3,同时设置LEDS8控制口输出,再通过T1CCR设置CAP1.3为下降沿捕获,最后启动定时器。程序读取捕获的值,用作延时参数,控制LEDS8闪烁。该实验流程图如图4.96所示,实现程序如程序清单4.25所示。
根据上表所示P0.18、P0.21控制CAP1.3的功能
根据表5.5所示设置引脚的连接,捕获1.3要使用
PINSEL1=1
根据上表对TICCR进行修改,TICCR=1
开始 ↓
P0.18引脚连接CAP1.3 ↓
定时器初始化:时钟分频、下降沿捕获、使能定时器 ↓
读取捕获的值,用作延时参数,控制LEDS8闪烁,蜂鸣器蜂鸣 ↓ 结束
图4.96 定时器捕获实验流程图 五、输入捕获实验程序:
程序清单4.25 #include "config.h"
/*
********************************************************************************************************* ** 函数名称 :delay()
** 函数功能 :短软件延时
** 入口参数 :dly 延时参数,值越大,延时越久 ** 出口参数 :无
********************************************************************************************************* */
void delay(uint32 dly) {
uint32 i;
for ( ; dly>0; dly--) for (i=0; i
********************************************************************************************************* ** 函数名称 :main()
** 函数功能 :使用定时器1捕获按键定时,控制LEDS8闪烁。 ** 调试说明 :需要将跳线JP12连接LEDS8。
********************************************************************************************************* */
int main (void) {
volatile uint32 i;
// P0.17连接捕获1.3 PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO // 设置LEDS8控制口为输出 T1PR = 99;
// 设置CAP1.3下降沿捕获 T1TC = 0;
T1TCR = 0x01; // 启动定时器
while (1) { // 读取捕获到的T1TC值,用作延时参
数 delay(i); delay(i); }
return 0; 注:修改过的程序均用下划线标出。
全速运行程序,按一下KEY3键,LEDS8开始闪烁(先奇数LED亮,再偶数LED亮);再按第二次,LED闪烁将会变慢;再次按KEY3,LED闪烁将会变得更慢。
六、实验小结:
通过实验使我对定时器的使用掌握的更多,掌握如何进行引脚的修改,要通 查表来确定所要连接的引脚,以及设置引脚功能的方法。并且复习对GPIO的使用,使我懂得要学以致用,在以后的学习中要注意这方面能力的培养。
微机原理实验报告
实验名称: 定时器输入捕获实验 院 系:物理与机电工程学院 专业班级: 08电子信息工程 学 号: 学生姓名: 指导教师: 涂二生 完成时间:报告成绩:
定时器输入捕获实验
一、实验目的:
掌握使用定时器以及所涉及的寄存器的使用方法,学会程序的书写和使用。 本次实验对程序进行修改使原来CAP1.2下降沿改为CAP1.3下降沿。将GPIO特殊应用加入程序中,使用LEDS8分奇数和偶数点亮;在LED灯亮的同时蜂鸣器随着蜂鸣。
二、实验器材:
电脑一台,ARM7实验开发板,AXD仿真软件 三、实验原理:
使用定时器1的输入捕获功能,获取延时参数,用于控制LEDS8的闪烁频率。程序首先设置P0.18引脚连接CAP1.3,同时设置LEDS8控制口输出,再通过T1CCR设置CAP1.3为下降沿捕获,最后启动定时器。程序读取捕获的值,用作延时参数,控制LEDS8闪烁。该实验流程图如图4.96所示,实现程序如程序清单4.25所示。
根据上表所示P0.18、P0.21控制CAP1.3的功能
根据表5.5所示设置引脚的连接,捕获1.3要使用
PINSEL1=1
根据上表对TICCR进行修改,TICCR=1
开始 ↓
P0.18引脚连接CAP1.3 ↓
定时器初始化:时钟分频、下降沿捕获、使能定时器 ↓
读取捕获的值,用作延时参数,控制LEDS8闪烁,蜂鸣器蜂鸣 ↓ 结束
图4.96 定时器捕获实验流程图 五、输入捕获实验程序:
程序清单4.25 #include "config.h"
/*
********************************************************************************************************* ** 函数名称 :delay()
** 函数功能 :短软件延时
** 入口参数 :dly 延时参数,值越大,延时越久 ** 出口参数 :无
********************************************************************************************************* */
void delay(uint32 dly) {
uint32 i;
for ( ; dly>0; dly--) for (i=0; i
********************************************************************************************************* ** 函数名称 :main()
** 函数功能 :使用定时器1捕获按键定时,控制LEDS8闪烁。 ** 调试说明 :需要将跳线JP12连接LEDS8。
********************************************************************************************************* */
int main (void) {
volatile uint32 i;
// P0.17连接捕获1.3 PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO // 设置LEDS8控制口为输出 T1PR = 99;
// 设置CAP1.3下降沿捕获 T1TC = 0;
T1TCR = 0x01; // 启动定时器
while (1) { // 读取捕获到的T1TC值,用作延时参
数 delay(i); delay(i); }
return 0; 注:修改过的程序均用下划线标出。
全速运行程序,按一下KEY3键,LEDS8开始闪烁(先奇数LED亮,再偶数LED亮);再按第二次,LED闪烁将会变慢;再次按KEY3,LED闪烁将会变得更慢。
六、实验小结:
通过实验使我对定时器的使用掌握的更多,掌握如何进行引脚的修改,要通 查表来确定所要连接的引脚,以及设置引脚功能的方法。并且复习对GPIO的使用,使我懂得要学以致用,在以后的学习中要注意这方面能力的培养。