把SPI3配置成3线从模式,只进行发送,不能使能SPI3,甚至直接写CR1寄存器都不能使能。
配置如下:
static void SPI_Config(void)
{
stc_spi_init_t stcSpiInit;
stc_irq_signin_config_t stcIrqSignConfig;
/* Configure Port */
GPIO_SetFunc(SPI_SCK_PORT, SPI_SCK_PIN, SPI_SCK_FUNC);
GPIO_SetFunc(SPI_MISO_PORT, SPI_MISO_PIN, SPI_MISO_FUNC);
/* Configuration SPI */
FCG_Fcg1PeriphClockCmd(SPI_CLK, ENABLE);
SPI_StructInit(&stcSpiInit);
stcSpiInit.u32WireMode = SPI_3_WIRE;
stcSpiInit.u32TransMode = SPI_SEND_ONLY;
stcSpiInit.u32MasterSlave = SPI_SLAVE;
stcSpiInit.u32Parity = SPI_PARITY_INVD;
stcSpiInit.u32SpiMode = SPI_MD_3;
stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV8;
stcSpiInit.u32DataBits = SPI_DATA_SIZE_32BIT;
stcSpiInit.u32FirstBit = SPI_FIRST_MSB;
stcSpiInit.u32FrameLevel = SPI_1_FRAME;
(void)SPI_Init(SPI_UNIT, &stcSpiInit);
}
在IAR中单步调试,发现用库函数SPI_Cmd(SPI_UNIT, ENABLE); 不能使能SPI, CR1总是为0x03
换成直接写寄存器命令
*(uint32_t *)0x40020004 = 0x00000043;
CR1仍然是0x03.
真的让人奔溃! |