STM32入門教程-2022持續(xù)更新中

想看SPI和漢字以及圖片的去 我的B站,UID:626862190 看這期視頻【SPI 0.96oled+字庫(kù)圖庫(kù)制作】
DMA這里
/**先配置通道,傳送時(shí)再寫源地址、目的地址、傳送大小,這樣地址更靈活**/
void MyDMA_Init(void)
{
??RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
??DMA_InitTypeDef?DMA_InitStructure;
??DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
??DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;
??DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
??DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
??DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
??DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;
??DMA_InitStructure.DMA_Priority = DMA_Priority_Low;
??DMA_Init(DMA1_Channel7,&DMA_InitStructure);
DMA_Cmd(DMA1_Channel7,DISABLE);
}
void MyDMA_StartTransfer(uint32_t AddrA,uint32_t AddrB,uint16_t Size)
{
DMA_Cmd(DMA1_Channel7,DISABLE);
??DMA1_Channel7->CPAR = AddrA;
DMA1_Channel7->CMAR = AddrB;
DMA_SetCurrDataCounter(DMA1_Channel7,Size);// 等同于DMA1_Channel7->CNDTR = Size;??
DMA_Cmd(DMA1_Channel7,ENABLE);
while(DMA_GetFlagStatus(DMA1_FLAG_TC7) == RESET);
DMA_ClearFlag(DMA1_FLAG_TC7);
}