STM32入门教程-2022持续更新中

想看SPI和汉字以及图片的去 我的B站,UID:626862190 看这期视频【SPI 0.96oled+字库图库制作】
DMA这里
/**先配置通道,传送时再写源地址、目的地址、传送大小,这样地址更灵活**/
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);
}