众所周知,STM32 SPI是个半残废,NSS无法自动拉高,所以使用SPI 从机会一直使能,当主机是一对多的时候,就会出现SPI从机互相干扰的问题。
我利用GPIO中断,代替NSS引脚,使用过程如下代码所示
1.初始化SPI 的IO口,其中NSS引脚先不管。
void GPIO_SPI12_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//----- 第1步:打开SPI部件的时钟 --------------------------------------------------------------------------------------------
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
//----- 第2步:打开SPI相关的引脚为复用推挽输出 -----------------------------------------------------------------------------
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
/* SPI SCK pin configuration */
GPIO_InitStructure.GPIO_Pin = SPI12_SCK_P