- u8 ad_long[500];
- u8 cd_long[400];
- while (1)
- {
- HAL_UART_Transmit(&huart1,(uint8_t *)"DMA_ON",6,100);
- HAL_SPI_Receive_DMA(&hspi1, ad_long, 400);
- HAL_UART_Transmit(&huart1,(uint8_t *)"DMA_OK",6,100);
-
- HAL_Delay(300);
- }
复制代码
stm32f1xx_it.c:
- void DMA1_Channel2_IRQHandler(void)
- {
- /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
- HAL_UART_Transmit(&huart1,(uint8_t *)"IRQ_RX",6,100);
- /* USER CODE END DMA1_Channel2_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_spi1_rx);
- /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
- /* USER CODE END DMA1_Channel2_IRQn 1 */
- }
- /**
- * @brief This function handles DMA1 channel3 global interrupt.
- */
- void DMA1_Channel3_IRQHandler(void)
- {
- /* USER CODE BEGIN DMA1_Channel3_IRQn 0 */
- HAL_UART_Transmit(&huart1,(uint8_t *)"IRQ_TX",6,100);
- /* USER CODE END DMA1_Channel3_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_spi1_tx);
- /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */
- /* USER CODE END DMA1_Channel3_IRQn 1 */
- }
复制代码
代码如上,好像不能直接从剪贴板上传图片。。
简单描述下逻辑分析仪抓到的结果把:
HAL_SPI_Receive_DMA()开始接收后会在MOSI上发送一段0xff,理论上MOSI电平应该不变啊?
DMA接收完成后(SCK不变了),串口会先收到IRQ_TX之后才是IRQ_RX,也就是说同时进入了DMA1 的2和3通道的中断服务函数 这是为什么啊?
|