通用定时器秒表实验报告三
更新时间:2024-04-05 15:50:01 阅读量: 综合文库 文档下载
- 通用定额发票能报销吗推荐度:
- 相关推荐
嵌入式实验三.基于通用定时器秒表的实现
3.3基于通用定时器秒表的实现
一、实验目的
学会编写中断程序
学会应用LM3S9b92的通用定时器 比较通用定时器和systick的特性 二、实验设备
计算机、LM3S9B92开发板、USB A型公口转 Mini B型 5Pin 数据线1 条 三、实验原理
在Stellaris系列ARM内部通常集成有4个通用定时器模块(General-Purpose Timer Module,GPTM),分别称为Timer0、Timer1、Timer2和Timer3。它们的用法是相同的:每个Timer模块都可以配置为一个32位定时器或一个32位RTC定时器;也可以拆分为两个16位的定时/计数器TimerA和TimerB,它们可以被配置为独立运行的定时器、事件计数器或PWM等。 四、实验要求
参照systick设计秒表的思路,应用通用定时器进行计时,实现秒表功能。开发板上的按键SW1起秒表的起始和停止作用,按下SW1键,表示秒表的启动,开始计时,再按下SW1键,则表示秒表的停止。秒表时间的显示,可以采用LED1灯的闪烁方式,或者直接显示在液晶屏上。 五、实验步骤
1、 连接实验设备:使用USB mini B线缆的mini端与开发板ICDI口相连,另一端接到PC机
的USB插口上。
2、 根据实验要求编写、调试、运行程序。并要求在代码上附上相关的注释。 3、 书写实验报告,要求附上程序流程图。
实验代码:
#include \#include
// 定义 LED
#define LED_PERIPH SYSCTL_PERIPH_GPIOF
#define LED_PORT GPIO_PORTF_BASE #define LED_PIN GPIO_PIN_3
#define KEY_PERIPH SYSCTL_PERIPH_GPIOJ #define KEY_PORT GPIO_PORTJ_BASE #define KEY_PIN GPIO_PIN_7
unsigned char count=0; unsigned char flag=0;
void LED(unsigned int n) //根据n值控制LED闪烁次数 { while(n>0) {
GPIOPinWrite(LED_PORT, LED_PIN, 0xFF); // 点亮 LED SysCtlDelay(150 * (TheSysClock / 3000)); // 延时约 150ms GPIOPinWrite(LED_PORT, LED_PIN, 0x00); // 熄灭 LED SysCtlDelay(850 * (TheSysClock / 3000)); // 延时约 850ms n=n-1; } }
int main(void) {
//jtagWait( ); // 防止 JTAG 失效,重要! clockInit( ); // 时钟初始化:晶振, 6MHz
SysCtlPeriEnable(LED_PERIPH); // 使能 LED 所在的 GPIO 端口
GPIOPinTypeOut(LED_PORT, LED_PIN); // 设置 LED 所在的管脚为输出 SysCtlPeriEnable(KEY_PERIPH); // 使能 KEY 所在的 GPIO 端口
GPIOPinTypeIn(KEY_PORT, KEY_PIN); // 设置 KEY 所在管脚为输入
SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); // 使能 Timer 模块
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); // 配置 Timer 为 32 位周期定时器
// TimerPrescaleSet(TIMER0_BASE, TIMER_A, 199); // 预先进行 200 分频
TimerLoadSet(TIMER0_BASE, TIMER_A, 16000000); // 设置 Timer 初值,定时 1s
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); // 使能 Timer 超时中断 IntEnable(INT_TIMER0A); // 使能 Timer 中断
GPIOIntTypeSet(KEY_PORT, KEY_PIN, GPIO_LOW_LEVEL); // 设置 KEY 管脚的中断类型 GPIOPinIntEnable(KEY_PORT, KEY_PIN); // 使能 KEY 所在管脚的中断 IntEnable(INT_GPIOJ); // 使能 GPIOJ 端口中断
IntMasterEnable( ); // 使能处理器中断 for (;;) { } }
// SysTick 计数器的中断服务函数 void Timer0A_ISR(void) {
unsigned long ulStatus;
ulStatus = TimerIntStatus(TIMER0_BASE, true); // 读取中断状态 TimerIntClear(TIMER0_BASE, ulStatus); // 清除中断状态,重要! if (ulStatus & TIMER_TIMA_TIMEOUT) // 如果是 Timer 超时中断 {
count++; //计数器加1 return; } }
// GPIOJ 的中断服务函数 void GPIO_Port_J_ISR(void) {
unsigned char ucVal; unsigned long ulStatus;
// IntMasterDisable( ); //关闭中断
ulStatus = GPIOPinIntStatus(KEY_PORT, true); // 读取中断状态 GPIOPinIntClear(KEY_PORT, ulStatus); // 清除中断状态,重要 if (ulStatus & KEY_PIN) // 如果 KEY 的中断状态有效 { if(flag==0){ TimerEnable(TIMER0_BASE, TIMER_A); // 使能 Timer 计数 flag=1; SysCtlDelay(50 * (TheSysClock / 3000)); } else if(flag==1) { TimerDisable(TIMER0_BASE, TIMER_A); // 使能 Timer 计数 flag=0; LED(count); //闪烁LED count=0; //计数置零 SysCtlDelay(10 * (TheSysClock / 3000)); } }
// IntMasterEnable( ); //使能中断
}
流程图:
六、实验心得
通过本次试验,我学会了编写中断程序,学会应用LM3S9b92的通用定时器 ,比较通用定时器和systick的特性.
正在阅读:
通用定时器秒表实验报告三04-05
2018年电大计算机应用基础核心课形考册05-26
关于针对高考化学热点知识训练305-04
《2013-2018年中国超级电容器电解液市场深度研究与投资前景分析报告》08-15
西师版三年级数学下册《长方形、正方形面积的计算》说课稿05-17
苏教版语文三年级上册第七单元第22课《金子》同步练习C卷04-28
合资经营协议中英文05-07
征地拆迁中的不稳定问题及对策(精选多篇)09-28
金融建模03-08
公司“两优一先”先进个人事迹材料范文04-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 秒表
- 定时器
- 通用
- 实验
- 报告
- 关于举办第五个五年管理周期2015年度乌鲁木齐地区中小学(幼)教
- 学院简介
- 郑州市科学技术进步奖励办法
- 华东理工大学电话黄页
- 党支部的八项基本任务
- 形势与政策
- 八位串行输入串行输出冒泡排序(verilog)
- 调查基本方式、方法和步骤
- 我对恐怖主义的看法
- 2019秋高中历史 第5单元 中国近现代社会生活的变迁 16 大众传媒
- 康复治疗中预防并发症、二次残疾的措施
- 人教版小学语文五年级下册第六单元检测题
- 企业质量管理制度执行情况检查考核表 - 图文
- 医院病案统计科未来发展规划
- 企业所得税
- 2019七年级英语上册 Review of Units 1-2综合习题测试(新版)仁
- 社区突发公共卫生事件应急预案
- 厦门市第四批地产工业品推荐目录
- 让自轮运转设备向机务化管理迈进 - 图文
- 与爱同行 - -幼儿园传统文化节日特色课程的实践与探索