2425|0

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430中断嵌套问题 [复制链接]

main()
{
  WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器
  P5DIR |= 0xff; //设P1.0 为输出
  CCTL0 = CCIE; //CCR0开中断允许
  CCR0 = 1000-1; //向CCR0捕获/比较寄存器装入初值,用于比较
  TACTL = TASSEL_1 + MC_1; //选ACLK为定时器A时钟源, 增计数模式
  P6SEL = 0x0F; // 打开A0-A3 A/D通道输入
  P5DIR=0XFF;
  ADC12CTL0 = ADC12ON+MSC+SHT0_10; //开ADC12模块+采样信号由SHI仅首次触发
  //+采集定时器分频系数n=64,
  ADC12CTL1 = SHP+CONSEQ_3; // 使用采样定时器输出作采集/转换信号SAMPCON
  // 重复序列采样模式
  ADC12MCTL0 = INCH_0; // 参考电压ref+=AVcc, 输入通道选择为A0
  ADC12MCTL1 = INCH_1; // 参考电压ref+=AVcc, 输入通道选择为A1
  ADC12MCTL2 = INCH_2; // 参考电压ref+=AVcc, 输入通道选择为A2
  ADC12MCTL3 = INCH_3+EOS; // 参考电压ref+=AVcc, 输入通道选择为A3
  //+由此通道产生序列结束控制位
  ADC12IE = 0x08; // A3通道开中断ADC12IFG.3
  ADC12CTL0 |= ENC; // 允许转换
  ADC12CTL0 |= ADC12SC; // 启动转换
  _EINT();
}
// Timer A0中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P5OUT ^= 0x05; //反转P1.0
}

#pragma vector=ADC_VECTOR //ADC中断服务程序
__interrupt void ADC12ISR (void)
{
  _EINT();
  static unsigned int index = 0; //中断服务程序中的静态变量
  A0results[index] = ADC12MEM0; //移动A0结果往数组,此操作的同时清除ADC12FIG.0
  A1results[index] = ADC12MEM1; //移动A1结果往数组,此操作的同时清除ADC12FIG.1
  A2results[index] = ADC12MEM2; //移动A2结果往数组,此操作的同时清除ADC12FIG.2
  A3results[index] = ADC12MEM3; //移动A3结果往局数组,此操作的同时清除ADC12FIG.3
}

中断嵌套不了。想实现的功能是定时器是不断的中断的,ad也是不断中断的

 
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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