2867|0

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

LM3S9B92定时器的16位输入下降沿捕获模式怎么配置? [复制链接]

哪位大虾能看看我这段代码配置出现什么问题了,代码完全按照datasheet上的配置步骤进行配置,但是下降沿捕获模式无法进入中断处理函数(引脚外部提供下降沿脉冲

),但超时中断却能进入中断处理函数。MCU是TI的LM3S9B92,使用PB0的复用功能CCP0,想利用其16位定时器定时捕获模式。PB0连接至红外接收器的输出引脚,由遥控器提供下降沿脉冲触发信号。
下面是我初始化函数:
void
Timer0IntCapture(void)
{
  // 开启Timer0时钟门控控制
HWREG(SYSCTL_BASE + 0x104) |= (0x1 << 16);

// 开启GPIOB时钟门控控制
HWREG(SYSCTL_BASE + 0x108) |= (0x1 << 1);

// 禁用定时器Timer0A
  HWREG(TIMER0_BASE + TIMER_O_CTL) &= (~0x1);

// 将GPIOB端口的PB0配置为复用功能
HWREG(GPIO_PORTB_BASE + 0x420) |= 0x1;

// 将PB0配置为CCP0管脚
HWREG(GPIO_PORTB_BASE + 0x52C) &= ~0xf;
HWREG(GPIO_PORTB_BASE + 0x52C) |= 0x1;

// 16位定时器配置
  HWREG(TIMER0_BASE + TIMER_O_CFG) = 0x4;
  
// 配置为边沿计时模式
  HWREG(TIMER0_BASE + TIMER_O_TAMR) |= (0x1 << 2);

// 将TimerA配置为捕获模式
  HWREG(TIMER0_BASE + TIMER_O_TAMR) |= 0x3;
  
// 定义Timer0为下降沿捕获方式
  HWREG(TIMER0_BASE + TIMER_O_CTL) &= ~(0x3 << 2);
  HWREG(TIMER0_BASE + TIMER_O_CTL) |= (0x3 << 2);
  
// 往TimerA间隔加载寄存器装入初值
  HWREG(TIMER0_BASE + TIMER_O_TAILR) = 0xFFFF;
  
// 开启Timer0A捕获下降沿中断和超时中断
  HWREG(TIMER0_BASE + TIMER_O_IMR) |= (0x1 << 2);
   HWREG(TIMER0_BASE + TIMER_O_IMR) |= 0x1;

// 使能Timer0A事件捕获中断
TimerIntEnable(TIMER0_BASE,TIMER_CAPA_EVENT);

// 使能Timer0A中断
IntEnable(INT_TIMER0A);

//开启定时器Timer0A开始计时和捕获逻辑
HWREG(TIMER0_BASE + TIMER_O_CTL) |= 0x1;

// 使能处理器中断
IntMasterEnable();
}


[ 本帖最后由 梦归魂 于 2012-11-28 17:43 编辑 ]
 
点赞 关注

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表