高级会员

- 积分
- 532
- 金钱
- 532
- 注册时间
- 2015-5-31
- 在线时间
- 115 小时
|
10金钱
本帖最后由 lwj199302 于 2016-5-10 17:03 编辑
用SPI1代码如下:
RCC_APB2PeriphClockCmd( SPI_FLASH_GPIO_CLK | SPI_FLASH_CS_GPIO_CLK|RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 ,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_PIN_SCK | SPI_FLASH_PIN_MOSI;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPI_FLASH_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_GPIO, SPI_FLASH_PIN_SCK | SPI_FLASH_PIN_MOSI);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_PIN_MISO;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(SPI_FLASH_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_GPIO, SPI_FLASH_PIN_MISO);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_CS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_FLASH_CS_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_CS_GPIO, SPI_FLASH_CS);
用SPI3代码如下:
RCC_APB2PeriphClockCmd( SPI_FLASH_GPIO_CLK | SPI_FLASH_CS_GPIO_CLK|RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3 ,ENABLE);
//GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_PIN_SCK | SPI_FLASH_PIN_MOSI;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPI_FLASH_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_GPIO, SPI_FLASH_PIN_SCK | SPI_FLASH_PIN_MOSI);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_PIN_MISO;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(SPI_FLASH_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_GPIO, SPI_FLASH_PIN_MISO);
GPIO_InitStructure.GPIO_Pin = SPI_FLASH_CS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_FLASH_CS_GPIO, &GPIO_InitStructure);
GPIO_SetBits(SPI_FLASH_CS_GPIO, SPI_FLASH_CS);
PB3、PB4和PB5口是W25Q32的IO口,映射到SPI1的时候flash可以调通。可是为什么用SPI3的时候却挂在了SPI_FLASH_SendByte()函数里面呢?????????,求解
uint8_t SPI_FLASH_SendByte(uint8_t byte)
{
/* Loop while DR register in not emplty */
while((SPI_FLASH->SR & SPI_I2S_FLAG_TXE) == RESET);
/* Send byte through the SPI1 peripheral */
SPI_FLASH->DR = byte;
/* Wait to receive a byte */
while((SPI_FLASH->SR & SPI_I2S_FLAG_RXNE) == RESET);
/* Return the byte read from the SPI bus */
return (SPI_FLASH->DR);
}
|
|