STM32F42XX SPI3无输出问题

扣扣技术交流群:460189483 

在做STM32F42XX系列STM32 SPI通讯时,SPI3的SCK引脚时钟无法看到时钟波形,工程是从SPI5的工程改的,初始化配置代码如下:



SPI_HandleTypeDef SPI3_Handler;  //SPI¾ä±ú

void SPI3_Init(void)
{
    SPI3_Handler.Instance=SPI3;                         //SP3
    SPI3_Handler.Init.Mode=SPI_MODE_MASTER;             
    SPI3_Handler.Init.Direction=SPI_DIRECTION_2LINES;  
    SPI3_Handler.Init.DataSize=SPI_DATASIZE_16BIT;       
    SPI3_Handler.Init.CLKPolarity=SPI_POLARITY_LOW;    
    SPI3_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;         
    SPI3_Handler.Init.NSS=SPI_NSS_SOFT;                 
    SPI3_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;
    SPI3_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;        
    SPI3_Handler.Init.TIMode=SPI_TIMODE_DISABLE;        
    SPI3_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;
    SPI3_Handler.Init.CRCPolynomial=7;                  
    HAL_SPI_Init(&SPI3_Handler);
    
    __HAL_SPI_ENABLE(&SPI3_Handler);                    
	
}


void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
{
    GPIO_InitTypeDef GPIO_Initure;
    
    __HAL_RCC_GPIOC_CLK_ENABLE();       
    __HAL_RCC_SPI3_CLK_ENABLE();        
    
    //PC10,11,12
    GPIO_Initure.Pin=GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              
    GPIO_Initure.Pull=GPIO_PULLUP;                 
    GPIO_Initure.Speed=GPIO_SPEED_FAST;                  
    GPIO_Initure.Alternate=GPIO_AF5_SPI3;           
    HAL_GPIO_Init(GPIOC,&GPIO_Initure);
}

看起来配置没有问题,百思不得其解!

经过查阅资料发现引脚的复用错了,GPIO_AF5_SPI3这里有问题,映射表如下:

细心的可以发现,有GPIO_AF5_SPI3、GPIO_AF6_SPI3两种映射,到底使用哪一种才正确呢?查阅STM32F4XX中文手册,找到180页GPIO映射表,如下:

很明显SPI3使用的是AF6,所以此处改为GPIO_AF6_SPI3,这样就可以正确的输出了!

猜你喜欢

转载自blog.csdn.net/u014453443/article/details/83177645