感谢硬汉回复. 目前已经能跑起来了,是初始化顺序的问题;
1. 因为是cubemx生成的时钟配置, D3时钟是在这段是使能了的
[C] 纯文本查看 复制代码 /** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
{
Error_Handler();
}
2. 目前确实是如你说的, 只在数据发送时使用dma
3. 但是先前我直接使用 cubemx 的初始化函数时, 使用的顺序是
[C] 纯文本查看 复制代码 MX_SPI6_Init();
MX_BDMA_Init();
调换顺序后,就可以运行了, 应该是dma时钟未使能的情况下, 对dma的配置的结果 |