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 链接也会打断我设置的其他中断?