3795|2

5979

帖子

8

TA的资源

版主

楼主
 

LM3S8962学习(三) -- Timer中断 [复制链接]

本次学习的目的是如何使用Timer,使用定时器中断,来改变LED状态

定时器操作涉及到的相关函数:

l  TimerConfigure 配置定时器;

l  TimerDisable 禁止定时器;

l  TimerEnable 使能定时器;

l  TimerIntClear 清除定时器中断源;

l  TimerIntEnable 使能指定的定时器中断源;

l  TimerIntStatus 获取当前的中断状态;

l  TimerLoadSet 设置定时器装载值。

 

1.同样首先我们需要在startup_rvmdk.S中定义中断服务子程序,这里使用timer0,注意修改的位置

EXTERN  Timer0IntHandler

DCD     Timer0IntHandler            ; Timer 0 subtimer A

 

2.使能TIMER0功能,同时配置LED,这和前面的是一样的

SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

GPIODirModeSet(GPIO_PORTF_BASE,LED,GPIO_DIR_MODE_OUT);

GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);

 

3. 配置Timer0为周期性触发模式

TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);

 

4.配置定时器装载值,为1S

TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet());

 

5. 使能Timer0的相关中断

IntEnable(INT_TIMER0A);//使能Timer0外设

TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);//设置Timer0

TimerEnable(TIMER0_BASE, TIMER_A);//使能Timer0

 

实验的效果的是每隔1S钟,LED状态变化一次

 

实验代码如下:

#include "inc/hw_ints.h"

#include "inc/hw_memmap.h"

#include "inc/hw_types.h"

#include "driverlib/debug.h"

#include "driverlib/gpio.h"

#include "driverlib/interrupt.h"

#include "driverlib/sysctl.h"

#include "driverlib/timer.h"

#include "drivers/rit128x96x4.h"

 #define LED GPIO_PIN_0

Void  Timer0IntHandler(void)

{

    TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);

          GPIOPinWrite(GPIO_PORTF_BASE, LED, LED^GPIOPinRead(GPIO_PORTF_BASE,LED));    

}

Int  main(void)

{

   

    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);

 

         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

         GPIODirModeSet(GPIO_PORTF_BASE,LED,GPIO_DIR_MODE_OUT);

         GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);

 

    TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);

TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet());

 

    IntEnable(INT_TIMER0A);

    TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);

TimerEnable(TIMER0_BASE, TIMER_A);

 

    while(1)

    {

    }

}

最新回复

总结的很好!  详情 回复 发表于 2011-2-24 11:06
 
点赞 关注
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰

回复
举报

545

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
学习了。不错
 
 

回复

89

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
总结的很好!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表