关于我的那个IO的问题,我再说得具体点吧

楼主
关于我的那个IO的问题,我再说得具体点吧
就拿这个例子来说。这个例子是本论坛一位前辈发的TB捕获的实例
#include<msp430x14x.h>     
 unsigned int width[10]={0,0,0,0,0,0,0,0,0,0};
 unsigned int i=0;

 void main()
{
  WDTCTL=WDTPW+WDTHOLD;         //关闭看门狗

  P4SEL|=BIT0;                          //P4.0作为捕获模块功能的输入端输入方波

   //-------开晶振XT2---------

   BCSCTL1&=~XT2OFF;                //打开XT2振荡器
   do
   {
   IFG1 &= ~OFIFG;                     // 清除振荡器失效标志
   for (i=256;i>0;i--);                     // 延时,等待XT2起振
   }
  while ((IFG1 & OFIFG) != 0);            // 判断XT2是否起振

  BCSCTL2 =SELM_2+SELS;             //选择MCLK=SMCLK为XT2

  //-----------------------------

  TBCCTL0&=~(CCIS1+CCIS0);          // 捕获源为P4.0,即CCI0A(也是CCI0B)
  TBCCTL0|=CM_2+SCS+CAP;           //下降沿捕获,同步捕获,工作在捕获模式
  TBCCTL0|=CCIE;                     //允许捕获比较模块提出中断请求
  TBCTL|=ID_3;
(后面的省略)
[SIZE=6]我的疑问为:
一句“P4SEL|=BIT0;”,一句“TBCCTL0&=~(CCIS1+CCIS0);”,这就默认了CCIOA连接到P4.0了?我要是前面再多写一句“P4SEL|=BIT1;”,那这时候P4.0与P4.1哪个是CCIOA呢?[/SIZE]
1楼
新年好:
P4SEL|=BIT0这句是切换到其他复用功能;具体要查看这P40是用于什么样的功能来使用。由于P40是三种功能复用,比如IO、捕获输入、PWM输出。如果是捕获时则从此脚输入至TB,如果是输出则从TB输出PWM。
P40、41都可以连接至CCOA信号,可是这P40是对应TB模块的TB0子模块,同样41是对应TB模块的TB1子模块的。这两都不是并联关系,不要误会。
而TBCCTL0&=~(CCIS1+CCIS0);只是决某子模块中这年捕获信号来自那里。
大概是这样,不懂的自己子细看看两份用户手册吧。

电脑版 Page created in 0.0630 seconds width 2 queries.