当SPI1和SPI2读写没问题;相同的方法配置SPI3,读写失败。可以考虑下面的原因。
使用到SPI3,由于SPI3的PA15引脚和JTAG引脚共用,调试过程中发现SPI不能读写数据
经过查询datasheet发现, 使用SPI3需要先关闭JTAG功能(默认上电使能JTAG),如下:
①将PA15配置为普通IO口(GPIO_Mode_Out_PP )
②使能AFIO时钟,当需要重新配置IO口时,需要开启AFIO时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
③关闭JTAG,调用重映射函数,关闭JTAG,开启SWD:
// PA15 JTAG default, disable JTAG, open SWB !!!!!!!!!!!!!!!!!!!!!
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE) ;