CH579的SPI0 Slave模式使用DMA和中斷,一直進(jìn)中斷。

CH579的SPI0 Slave模式使用DMA和中斷,只要一開始傳輸數(shù)據(jù)就一直進(jìn)中斷,哪怕把spi的引腳斷開也不能使它停止。

麻煩大家看看,以下代碼問題在哪?

void?SPI_SlaveDMARecv(?PUINT8?pbuf,?UINT16?len)
{
????R8_SPI0_CTRL_MOD?|=?RB_SPI_FIFO_DIR;??				//fifo用于輸入
????R16_SPI0_DMA_BEG?=?(UINT32)pbuf;????????????????????????????????????//DMA首地址
????R16_SPI0_DMA_END?=?(UINT32)(pbuf?+?len);????????????????????????????//DMA尾地址
????R16_SPI0_TOTAL_CNT=len;?????????????????????????????????????????????//DMA緩沖區(qū)地址
????R8_SPI0_INT_FLAG?=?RB_SPI_IF_CNT_END|RB_SPI_IF_DMA_END;	????????//清除中斷標(biāo)志???傳輸全部完成????DMA完成
????R8_SPI0_INTER_EN	=?RB_SPI_IE_DMA_END?|?RB_SPI_IE_CNT_END;	//設(shè)置中斷源????傳輸全部完成????DMA完成
????R8_SPI0_CTRL_CFG?|=?RB_SPI_DMA_ENABLE;				//DMA使能
????NVIC_EnableIRQ(SPI0_IRQn);??????????????????????????????????????????//SPI0中斷使能
}


void?SPI0_IRQHandler?(void)
{
	if?(R8_SPI0_INT_FLAG?&?RB_SPI_IF_CNT_END)
	{
		R8_SPI0_INT_FLAG?=?RB_SPI_IF_CNT_END;			//清除傳輸全部完成中斷標(biāo)志
		PRINT("SPI:RB_SPI_IF_CNT_END\r\n");
	}
		if?(R8_SPI0_INT_FLAG?&?RB_SPI_IF_DMA_END)
	{
		R8_SPI0_INT_FLAG?=?RB_SPI_IF_DMA_END;			//清除DMA完成中斷標(biāo)志
		PRINT("SPI:RB_SPI_IF_DMA_END\r\n");
	}
}


void?SPI0_Init(void)
{
	
	GPIOA_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15,?GPIO_ModeIN_PU);
????????SPI0_SlaveInit();?
	SPI_SlaveDMARecv(spi_buffer,SPI_BUFFER_SIZE);
??
}



把工程貼出來我?guī)湍憧纯窗伞?/p>


icon_rar.gifPeripheral.zip

您好,我是直接在EVT的Peripheral例子上改的,覆蓋 EVT\EXAM\BLE 下的同名目錄即可編譯。謝謝~~j_0002.gif


哪位技術(shù)GG能幫忙看下嗎j_0056.gif


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频