专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
进不去中断
2019-07-18 15:31
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
20337
5
1226
只求TimerA捕获能通过p1.0(a通道)捕获脉冲,并算出周期,结果进不去中断,
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zhaoxqi
1楼-- · 2019-07-18 16:19
有没有捕获到脉冲?
加载中...
jlyuan
2楼-- · 2019-07-18 17:10
其实是个低级的错误,不过我忘了,这是我的最终程序,很准的,你们可以参考一下
测试脉冲的周期时间——made by lqs
#include "msp430f4152.h"
#define LCD_ZREO 0XFA//0xf5
#define LCD_ONE 0x60
#define LCD_TWO 0xD6
#define LCD_THREE 0xf4
#define LCD_FOUR 0x6c
#define LCD_FIVE 0xbc
#define LCD_SIX 0xbe
#define LCD_SEVEN 0xe0
#define LCD_EIGHT 0xfe
#define LCD_NINE 0xfc
unsigned char aa[10]={LCD_ZREO ,LCD_ONE ,LCD_TWO ,LCD_THREE , LCD_FOUR ,LCD_FIVE ,LCD_SIX ,LCD_SEVEN, LCD_EIGHT ,LCD_NINE };
unsigned int j=0,sub=0,data=0;
unsigned char i=0;
float f=0;
void clkinit()
{
FLL_CTL0 &= ~XT1OF;
FLL_CTL0 &= ~XTS_FLL;
FLL_CTL1 &= ~(FLL_DIV0);
FLL_CTL1 &= ~(FLL_DIV1);
}
void Portinit()
{
P1DIR &= 0X00;
P1SEL |= 0X01;
}
void Timer_Ainit()
{
TA0CTL |= TASSEL0 + MC_2;
TA0R = 0X00;
TACCTL0 |= SCS + CM1 + CAP + CCIE; // CCIS0 +
}
void LCDinit()
{
unsigned char t;
LCDACTL |= LCD4MUX + LCDON + LCDFREQ_128;
LCDAPCTL0 = 0X1F;
LCDAPCTL1 = 0X00;
LCDAVCTL0 |= LCDCPEN;
LCDAVCTL1 |= 0X18;
P5SEL = 0XF0;
for(t=0;t<10;t++)
LCDMEM[t] = 0;
}
void chazhi() //pulse recurrent time) 脉冲周期时间
{
j++;
if(j==1)
{
TACCR0 = 0X00;
}
if(j==2)
{
j=0;
sub = TACCR0;
}
}
void LCDdiaplay()
{
sub= f/32768*1000;//0.0001
LCDMEM[9] = 0x02;
LCDMEM[8] = 0;
data = sub%10;
LCDMEM[7] = aa[data]; //1.000
data = sub/10%10;
LCDMEM[6] = aa[data] + 0x01;
data = sub/100%10;
LCDMEM[5] = aa[data];
data = sub/1000%10;
LCDMEM[4] = aa[data];
// data = sub/10000%10;
LCDMEM[3] = 0;
// data = sub/100000%10;
LCDMEM[2] = 0;
LCDMEM[1] = 0;
LCDMEM[0] = 0;
}
/*void testLCD()
{
LCDMEM[0]=0xff;
LCDMEM[1]=0xff;
LCDMEM[2]=0xff;
LCDMEM[3]=0xff;
LCDMEM[4]=0xff;
LCDMEM[5]=0xff;
LCDMEM[6]=0xff;
LCDMEM[7]=0xff;
LCDMEM[8]=0xff;
LCDMEM[9]=0xff;
}*/
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out reset
clkinit();
Portinit();
Timer_Ainit();
LCDinit();
_EINT();
while(1)
{
LCDdiaplay();
}
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0()
{
//做脉冲的时间差值
j++;
if(j == 1)
{
TAR = 0X00; //定时器数TAR0送到TACCR0;
}
if(j == 2)
{
j = 0;
f = TACCR0;
}
TACCTL0 &= ~CCIFG;
}
加载中...
zhenykun
3楼-- · 2019-07-18 20:15
第一个程序确实错误太多了,不过恭喜楼主还是调试出来了
加载中...
spark周
4楼-- · 2019-07-18 21:28
理想的和实物仿真的的就是不一样
加载中...
jlyuan
5楼-- · 2019-07-18 23:11
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
其实是个低级的错误,不过我忘了,这是我的最终程序,很准的,你们可以参考一下
测试脉冲的周期时间——made by lqs
#include "msp430f4152.h"
#define LCD_ZREO 0XFA//0xf5
#define LCD_ONE 0x60
#define LCD_TWO 0xD6
#define LCD_THREE 0xf4
#define LCD_FOUR 0x6c
#define LCD_FIVE 0xbc
#define LCD_SIX 0xbe
#define LCD_SEVEN 0xe0
#define LCD_EIGHT 0xfe
#define LCD_NINE 0xfc
unsigned char aa[10]={LCD_ZREO ,LCD_ONE ,LCD_TWO ,LCD_THREE , LCD_FOUR ,LCD_FIVE ,LCD_SIX ,LCD_SEVEN, LCD_EIGHT ,LCD_NINE };
unsigned int j=0,sub=0,data=0;
unsigned char i=0;
float f=0;
void clkinit()
{
FLL_CTL0 &= ~XT1OF;
FLL_CTL0 &= ~XTS_FLL;
FLL_CTL1 &= ~(FLL_DIV0);
FLL_CTL1 &= ~(FLL_DIV1);
}
void Portinit()
{
P1DIR &= 0X00;
P1SEL |= 0X01;
}
void Timer_Ainit()
{
TA0CTL |= TASSEL0 + MC_2;
TA0R = 0X00;
TACCTL0 |= SCS + CM1 + CAP + CCIE; // CCIS0 +
}
void LCDinit()
{
unsigned char t;
LCDACTL |= LCD4MUX + LCDON + LCDFREQ_128;
LCDAPCTL0 = 0X1F;
LCDAPCTL1 = 0X00;
LCDAVCTL0 |= LCDCPEN;
LCDAVCTL1 |= 0X18;
P5SEL = 0XF0;
for(t=0;t<10;t++)
LCDMEM[t] = 0;
}
void chazhi() //pulse recurrent time) 脉冲周期时间
{
j++;
if(j==1)
{
TACCR0 = 0X00;
}
if(j==2)
{
j=0;
sub = TACCR0;
}
}
void LCDdiaplay()
{
sub= f/32768*1000;//0.0001
LCDMEM[9] = 0x02;
LCDMEM[8] = 0;
data = sub%10;
LCDMEM[7] = aa[data]; //1.000
data = sub/10%10;
LCDMEM[6] = aa[data] + 0x01;
data = sub/100%10;
LCDMEM[5] = aa[data];
data = sub/1000%10;
LCDMEM[4] = aa[data];
// data = sub/10000%10;
LCDMEM[3] = 0;
// data = sub/100000%10;
LCDMEM[2] = 0;
LCDMEM[1] = 0;
LCDMEM[0] = 0;
}
/*void testLCD()
{
LCDMEM[0]=0xff;
LCDMEM[1]=0xff;
LCDMEM[2]=0xff;
LCDMEM[3]=0xff;
LCDMEM[4]=0xff;
LCDMEM[5]=0xff;
LCDMEM[6]=0xff;
LCDMEM[7]=0xff;
LCDMEM[8]=0xff;
LCDMEM[9]=0xff;
}*/
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out reset
clkinit();
Portinit();
Timer_Ainit();
LCDinit();
_EINT();
while(1)
{
LCDdiaplay();
}
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0()
{
//做脉冲的时间差值
j++;
if(j == 1)
{
TAR = 0X00; //定时器数TAR0送到TACCR0;
}
if(j == 2)
{
j = 0;
f = TACCR0;
}
TACCTL0 &= ~CCIFG;
}
一周热门 更多>