This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2540 定时器1 通道0 捕获值 用DMA 通道传输

void HAL_ADC_SEQUENCE( DMA_DESC *DmaAdcDescr, uint16* AdcBuf)
{
    uint8 i;
    //T1_CH0  
 
    DmaAdcDescr->SRCADDRH   = HI_UINT161(&X_T1CC0H);
    DmaAdcDescr->SRCADDRL   = LO_UINT161(&X_T1CC0L);
    DmaAdcDescr->DESTADDRH  = HI_UINT161(AdcBuf);
    DmaAdcDescr->DESTADDRL  = LO_UINT161(AdcBuf);
    DmaAdcDescr->LENH       = 0x00;    //设置地址长度
    DmaAdcDescr->LENL       = 10;
    DmaAdcDescr->VLEN       = 0x00;    //固定长度
    DmaAdcDescr->WORDSIZE   = 0x00;    //按字节传输
    DmaAdcDescr->TMODE      = 0x02;    //单次传输 重复单次
    DmaAdcDescr->TRIG       = 2;      // 设置定时器1 比较 通道 20设置了触发模式DMA_TRIG_ADC_CHALL
    DmaAdcDescr->SRCINC     = 0x00;    //源地址增量0,源地址固定不变DMA_SRCINC_0     
    DmaAdcDescr->DESTINC    = 0x01;    //目标地址增量1,增加1 DMA_DESTINC_1
    DmaAdcDescr->IRQMASK    = 0x01;    //禁止通道中断
    DmaAdcDescr->M8         = 0x00;    //字模式下无用
    DmaAdcDescr->PRIORITY   = 0x01;    //优先级高
    
    DMA0CFGH = (uint8)HI_UINT161( DmaAdcDescr );
    DMA0CFGL = (uint8)LO_UINT161( DmaAdcDescr );
    DMAARM = 0x01;   //装配
    for(i = 0; i < 25; i++)       //延迟载入耗时间
    asm("NOP");  
    
    EA = 1;
    DMAIE = 1;
    DMAIF = 0;
 
      
}

      T1CTL   = 0X0D;          // 配置自由允许模式 0000-fffff 128分频
      T1CCTL0 = 0X43;          // 捕获模式 双边沿捕获
      T1STAT  = 0X00;
      PERCFG |= 0X40;         // 配置time1捕获通道位置2   
      P1SEL  |= 0X04;         // 设置P04 为TIME1 通道0 通道1
      P2SEL  |=0X07;          // 配置TIME1 优先   
      P1DIR  &=0XfB;          // 设置P02 为输入  
      T1IE    = 1;            // 开总中断和 T3 中断  
      T1CTL |=0X10;           //启动A
     // TIMIF &=0Xbf;           // 溢出中断
      TIMIF |=0X40;
      T1CNTL=0X00;      
      T1CNTH=0X00;

根据上面配置后 还是无法通过DMA 来获取到通道0 的捕获值,不过可以利用定时器捕获中断来获取到 捕获的值,但是我不想这样做,因为芯片一旦连接IOS 蓝色后,数据链接间隔周期修改 DEFAULT_DESIRED_MIN_CONN_INTERVAL   80 DEFAULT_DESIRED_Max_CONN_INTERVAL   100  这样就会影响到捕获,也就是ble 通信会打断该有的捕获中断, 因此我想利用DMA 来做传输通道,不进行tim1 的中断处理 这样不需要CPU 干预 应该得到较好的效果,但是 我不知道设置是否正确 所以请教TI 工程师们给予解答? 同时,我还想问 是不是ble 协议栈中,是不是不可以在一段代码中运行的时间过长,这样就会造成ble 和设备 链接断开?同时在其他中断中,BLE 链接也会打断我设置的其他中断?