STM32 的SPI1 引脚重映射 初次使用STM32 有些不太明白,此次调试经验奉献出来与大家分享! 系统:STM32 + SD + FATFS STM32 与SD 卡的连接如下定义 ,PB 口 #define SD_SCK GPIO_Pin_3 #define SD_MISO GPIO_Pin_4 #define SD_MOSI GPIO_Pin_5 #define SD_CS GPIO_Pin_7 我想使用SPI1 并重映射引脚使用时注意的事项如下 : 1.使能 PB0 时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 2.使能 AFIO 时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 3.使能 SPI1 时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE); 4.禁用JTAG 时钟复用 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 5.SPI1 引脚重映射 GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE); 接着初始化 GPIO 和 SPI1 即可,如: void SpiOpen(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; /* Configure SPI1 pins: SCKand MOSI */ GPIO_InitStructure.GPIO_Pin = SD_MOSI|SD_SCK|SD_MISO; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure PB7 pin: CS pin */ GPIO_InitStructure.GPIO_Pin = SD_CS; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,SD_CS); /* SPI1 Config */ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); /* SPI1 enable */ SPI_Cmd(SPI1, ENABLE); } 可是这一切完成的时候结果却与想象的不同 ,无法在 SD 卡内创建文件 ...