IAR调试时如何设置中断到了 10
如何知道中断到了,从而进入中断#include<msp430x14x.h>#defineucharunsignedchar#defineuintunsignedintst...
如何知道中断到了,从而进入中断
#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
static double data;//用来存储ADC12MEM中的数据
// **************初始化时钟**************//
void initClock(void)
{
BCSCTL1=RSEL2+RSEL1+RSEL0+DIVA_1; //XT2开启 LFXT1工作在低频模式 ACLK 2分频( 注释:原来的人没做分频,我担心频率过高) 最高的标称频率
DCOCTL=DCO2+DCO1+DCO0; //DCO为最高频率
do{
IFG1&=~OFIFG; //清除振荡器失效标志
for(unsigned int i=255;i>0;i--);
}
while(IFG1&OFIFG); //判断XT2是否起振
BCSCTL2=SELM1+SELS; //MCLK SMCLK时钟源为TX2CLK不分频
}
//*************延时函数************//
void delay(unsigned int m)
{
for(unsigned int i=0;i<m;i++);
}
//ADC12采样初始化,并打开中断子程序计算采样值的大小
void initADC12()
{
P6SEL=0X01; //P6.0作为模拟输入
ADC12IE=0X01; //开放中断ADC12IFG.0
ADC12CTL0=ADC12ON+SHT0_4+REFON+REF2_5V; //打开ADC12内核;采样周期为ADC12CLK的周期*16;内部参考电压打开;采用内部参考电压2.5v;
ADC12CTL1=SHP; //SAMPCON源自采样定时器,由采样输入信号的上升沿触发采样定时器
ADC12MCTL0=SREF_1; // 使用内部2.5V作为参考电压
ADC12CTL0 |=ENC; //开放使能
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR()
{
data=ADC12MEM0*2.5/4095; //data为全局变量
data=1;
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
/************主函数部分**********/
void main()
{
double temp=0.0;
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
initClock(); //初始化时钟
initADC12(); //init_lcd(); //lcd初始化
while(1)
{
ADC12CTL0 |= ADC12SC; // Sampling open
_BIS_SR(CPUOFF + GIE); // LPM0, ADC12_ISR will force exit
if(temp!=data)
{
temp=data;
}
}} 展开
#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
static double data;//用来存储ADC12MEM中的数据
// **************初始化时钟**************//
void initClock(void)
{
BCSCTL1=RSEL2+RSEL1+RSEL0+DIVA_1; //XT2开启 LFXT1工作在低频模式 ACLK 2分频( 注释:原来的人没做分频,我担心频率过高) 最高的标称频率
DCOCTL=DCO2+DCO1+DCO0; //DCO为最高频率
do{
IFG1&=~OFIFG; //清除振荡器失效标志
for(unsigned int i=255;i>0;i--);
}
while(IFG1&OFIFG); //判断XT2是否起振
BCSCTL2=SELM1+SELS; //MCLK SMCLK时钟源为TX2CLK不分频
}
//*************延时函数************//
void delay(unsigned int m)
{
for(unsigned int i=0;i<m;i++);
}
//ADC12采样初始化,并打开中断子程序计算采样值的大小
void initADC12()
{
P6SEL=0X01; //P6.0作为模拟输入
ADC12IE=0X01; //开放中断ADC12IFG.0
ADC12CTL0=ADC12ON+SHT0_4+REFON+REF2_5V; //打开ADC12内核;采样周期为ADC12CLK的周期*16;内部参考电压打开;采用内部参考电压2.5v;
ADC12CTL1=SHP; //SAMPCON源自采样定时器,由采样输入信号的上升沿触发采样定时器
ADC12MCTL0=SREF_1; // 使用内部2.5V作为参考电压
ADC12CTL0 |=ENC; //开放使能
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR()
{
data=ADC12MEM0*2.5/4095; //data为全局变量
data=1;
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
/************主函数部分**********/
void main()
{
double temp=0.0;
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
initClock(); //初始化时钟
initADC12(); //init_lcd(); //lcd初始化
while(1)
{
ADC12CTL0 |= ADC12SC; // Sampling open
_BIS_SR(CPUOFF + GIE); // LPM0, ADC12_ISR will force exit
if(temp!=data)
{
temp=data;
}
}} 展开
推荐于2016-02-05
展开全部
可以设置一个断点在中断服务程序中,然后单步执行并且触发中断,如按键触发外部中断,就进到服务程序中了。
一般来说断点总数不能超过3个,3个是可以的。
另外如果代码中已设的断点实际上不可能到达的断点也会有提示。而且那个代表断点,在源码左边的红点会变成白圈。
一般来说断点总数不能超过3个,3个是可以的。
另外如果代码中已设的断点实际上不可能到达的断点也会有提示。而且那个代表断点,在源码左边的红点会变成白圈。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询