launch pad 捕获模式求解,好心人帮帮吧。。。。

2019-03-24 14:30发布

launch pad捕获模式一直不成功,纠结了几天了啊,各种资料都找过也不知是哪里出问题了,代码如下,很简单的一个:

#include "msp430g2231.h"

void main(void){  WDTCTL = WDTPW + WDTHOLD;                  P1DIR |= 0x01;       //P1方向                      P1OUT |= 0x01;         P1SEL |= 0x02;       //P1.1口选择第二功能CCI0A  TACTL = TASSEL_2  + ID_3 + MC_2 ;   //SMCLK,8分频,连续计数模式         CCTL1 = CAP + SCS + CM_3 + CCIS0 + CCIE;   //捕获模式,同步,上下沿都捕获,输入源为CCI0A,使能CCR1中断  _EINT();  while(1);}
// Timer_A1 Interrupt Vector (TAIV) handler#pragma vector=TIMERA1_VECTOR__interrupt void Timer_A(void){ switch( TAIV ) {   case  1: P1OUT ^= 0x01;break;    case  2: P1OUT ^= 0x01;break;  //这句应该可以不用吧?                       case 10: break; }}


然后硬件部分我用P1.1接vcc,灯没反应啊,再改接地,也没反应。。照理说不是应该捕获到上升下降沿就翻转吗?
实在是不知道怎么办了,跪求高手解惑,感激不尽。。。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
shower.xu
1楼-- · 2019-03-25 11:32
这样试一下:初始化模式这样写P1DIR = 0x01;P1OUT&= ~0x01;P1SEL=0x02;CCTL0=CM_3+SCS+CCIS_0+CAP+CCIE;TACTL=TASSEL_2+MC_2+ID_3;中断应该是Timer0吧
#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A0(void){ P1OUT ^=0x01;}
还有lyzhangxiang帖子里的配置是xx21系列的,31是下面的 sss.jpg

pz_cloud
2楼-- · 2019-03-25 12:27
 精彩回答 2  元偷偷看……
pz_cloud
3楼-- · 2019-03-25 12:40
对了,还有一个问题,ccr0的自动复位是发生在什么时候呢?比如说我现在发生一个上升沿,然后进入中断,这个时候ccr0会已经被置0了吗?还是我能在中断函数中读取ccr0的值呢?
shower.xu
4楼-- · 2019-03-25 13:15
原帖由 pz_cloud 于 2012-4-30 13:21 发表 非常非常感谢!!!终于能用了啊!! 配置的确是你给的那个图,而且只能用ccr0中断! 但是还有几个问题想请教一下: 1 P1OUT那边配置P1.1口为1是不是就相当于使能了上拉电阻呢?因为我把P1.1跟vcc连接 ...
1、当端口设为输入,上下拉寄存器打开时,P1OUT是选择上下拉电阻功能。这里要加上P1REN |=0x02; 这里应该是默认高电平,所以第一次需要下降沿触发。 aa.jpg
2、P1.2是CCI1A。3、我偷懒没有判断中断标志位,正确做法应该在中断里面判断对应的标志位来确定是那个中断,参考下图 dd.jpg
shower.xu
5楼-- · 2019-03-25 14:05
 精彩回答 2  元偷偷看……
pz_cloud
6楼-- · 2019-03-25 14:41
非常感谢你的帮助,解决了我很多困惑啊,请问能加个qq吗?以后肯定还有需要帮忙的时候,有人指导的话效率高多了啊

一周热门 更多>

相关问题

    相关文章