如何解决STM32F407VG发现SPI中断循环错误
有一个非常简单的代码,如下所示。
当我在调试模式下运行时,它保持在无限循环中。 enter image description here
当我查看调试器控制台时;我看到了 WWDG_IRQHandler () 中断。但这里没有削减。为什么会导致这样的错误?会不会是寄存器地址分配有冲突?因为我无法以任何方式前进。 enter image description here
/*
* PB12 ---> SPI2_NSS
* PB13 ---> SPI2_SCLK
* PB14 ---> SPI2_MISO
* PB15 ---> SPI2_MOSI
* Alt fucn. Mode = 5
*/
#include "stm32f407xx.h"
#include "string.h"
void SPI2_GPIO_Init(void)
{
GPIO_Handle_t SPIPins;
SPIPins.pGPIOx =GPIOB;
SPIPins.GPIO_PinConfig.GPIO_PinMode = GPIO_MODE_ALTFN;
SPIPins.GPIO_PinConfig.GPIO_PinAltFunModer = 5;
SPIPins.GPIO_PinConfig.GPIO_PinOPType = GPIO_OP_PP;
SPIPins.GPIO_PinConfig.GPIO_PinPuPdControl = GPIO_NO_PUPD;
SPIPins.GPIO_PinConfig.GPIO_PinSpeed = GPIO_SPEED_FAST;
GPIO_PeripheralClockControl(GPIOB,ENABLE);
//SPI2_SCLK
SPIPins.GPIO_PinConfig.GPIO_PinNumber = GPIO_PIN_NO_13;
GPIO_Init(&SPIPins);
//MOSI
SPIPins.GPIO_PinConfig.GPIO_PinNumber = GPIO_PIN_NO_15;
GPIO_Init(&SPIPins);
//MISO
//SPIPins.GPIO_PinConfig.GPIO_PinNumber = GPIO_PIN_NO_14;
//GPIO_Init(&SPIPins);
//NSS
//SPIPins.GPIO_PinConfig.GPIO_PinNumber = GPIO_PIN_NO_12;
//GPIO_Init(&SPIPins);
}
void SPI2_Init()
{
SPI_Handle_t SPI2Handle;
SPI2Handle.pSPIx =SPI2;
SPI2Handle.SPI_Config.SPI_BusConfig =SPI_BUS_CONFIG_FD;
SPI2Handle.SPI_Config.SPI_DeviceMode =SPI_DEVICE_MODE_MASTER;
SPI2Handle.SPI_Config.SPI_SclkSpeed =SPI_SCLK_SPEED_DIV2; //8mhz
SPI2Handle.SPI_Config.SPI_DFF =SPI_DFF_8Bits;
SPI2Handle.SPI_Config.SPI_CPOL =SPI_CPOL_LOW;
SPI2Handle.SPI_Config.SPI_CPHA =SPI_CPHA_LOW;
SPI2Handle.SPI_Config.SPI_SSM =SPI_SSM_EN;
SPI_PeripheralClockControl(SPI2,ENABLE);
SPI2_Init(&SPI2Handle);
}
int main(void)
{
char user_data[] = "Hello World";
SPI2_GPIO_Init();
SPI2_Init();
SPI_SendData(SPI2,(uint8_t*) user_data,strlen(user_data));
while(1);
return 0 ;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。