|

楼主 |
发表于 2024-3-26 16:56:21
|
显示全部楼层
/* 初始化DMA */
if(HAL_DMA_Init(&TIMDMA) != HAL_OK)
{
Error_Handler(__FILE__, __LINE__);
}
/* 关联DMA句柄到TIM */
//__HAL_LINKDMA(&TimHandle, hdma[TIM_DMA_ID_UPDATE], TIMDMA);
/* 配置DMA中断 */
HAL_NVIC_SetPriority(TIMx_UP_DMA_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(TIMx_UP_DMA_IRQn);
/* 注册半传输完成中断和传输完成中断 */
HAL_DMA_RegisterCallback(&TIMDMA, HAL_DMA_XFER_CPLT_CB_ID, AD7606_DmaCplCb);
HAL_DMA_RegisterCallback(&TIMDMA, HAL_DMA_XFER_HALFCPLT_CB_ID, AD7606_DmaHalfCplCb);
/* 启动DMA传输 */
HAL_DMA_Start_IT(&TIMDMA, (uint32_t)AD7606_BASE, (uint32_t)g_sAd7606Buf, AD7606_BUFSIZE);
//这里就是数据传输的地方,AD7606_BASE是FMC总线地址,g_sAd7606BufAD数据存储位置
//g_sAd7606Buf 是一个 int16_t 类型的数组,强制转换为 uint32_t 类型并不会改变数组的内容或长度,只是在传递给函数时,将数组的地址以 32 位整数的形式进行了传递
设置AD7606_BUFSIZE为16*1024
|
|