本文主要是介绍STM32F42XX SPI3无输出问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
扣扣技术交流群:460189483
在做STM32F42XX系列STM32 SPI通讯时,SPI3的SCK引脚时钟无法看到时钟波形,工程是从SPI5的工程改的,初始化配置代码如下:
SPI_HandleTypeDef SPI3_Handler; //SPI¾ä±úvoid SPI3_Init(void)
{SPI3_Handler.Instance=SPI3; //SP3SPI3_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,12GPIO_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,这样就可以正确的输出了!
这篇关于STM32F42XX SPI3无输出问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!