Can';t使用SPI(stm32h743)进行传输。配置问题
我试图为spi通信编写stm32h743代码,但似乎无法传输。我使用PA5作为SCK,PD7作为MOSI。我阅读了参考手册(49.4.9)中要求的程序,并编写了下面的代码,但它不传输0x3(用示波器检查)Can';t使用SPI(stm32h743)进行传输。配置问题,stm32,spi,Stm32,Spi,我试图为spi通信编写stm32h743代码,但似乎无法传输。我使用PA5作为SCK,PD7作为MOSI。我阅读了参考手册(49.4.9)中要求的程序,并编写了下面的代码,但它不传输0x3(用示波器检查) RCC->AHB4ENR |=RCC_AHB4ENR_GPIOAEN;//gpio A、B、D的时钟启用 RCC->AHB4ENR |=RCC_AHB4ENR|u GPIODEN; RCC->AHB4ENR |=RCC_AHB4ENR_GPIOBEN; RCC->APB2ENR |=RCC_A
RCC->AHB4ENR |=RCC_AHB4ENR_GPIOAEN;//gpio A、B、D的时钟启用
RCC->AHB4ENR |=RCC_AHB4ENR|u GPIODEN;
RCC->AHB4ENR |=RCC_AHB4ENR_GPIOBEN;
RCC->APB2ENR |=RCC_APB2ENR_SPI1EN;//启用SPI时钟
GPIOA->MODER&=~GPIO\u MODER\u MODER5;//为gpioa和d启用备用功能
GPIOA->MODER |=GPIO_MODER_MODER5_1;//0b10用于备用功能(引脚5)
GPIOA->AFR[0]|=(0x05不使用幻数。STM提供的CMSIS头文件中有人类可读的定义。现在请不要浪费我们的时间。还有一些错误&=~(0xF我在询问是否缺少任何其他配置(即缺少任何其他步骤?)。我已为“幻数”添加了解释你应该期望他们是正确的,因为我在发帖前仔细检查过。所以不要期望任何帮助。尊重我们的时间。用人类可读的符号重写问题-然后我们可以帮助。重写错误的按位操作,因为他们做的事情与你想的不同。什么是人类可读的符号?十六进制数字?我不明白为什么你帮不上忙,我觉得我是在讲道理。DMA1\u Channel1->CCR=DMA\u CCR\u MINC | DMA\u CCR\u TCIE | DMA\u CCR\u EN |(0b10
RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN; // clock enable for gpio A,B,D
RCC->AHB4ENR |= RCC_AHB4ENR_GPIODEN;
RCC->AHB4ENR |= RCC_AHB4ENR_GPIOBEN;
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // enable SPI clock
GPIOA->MODER &= ~GPIO_MODER_MODER5; // enable alternate functions for gpioa and d
GPIOA->MODER |= GPIO_MODER_MODER5_1; // 0b10 for alternate function, (PIN5)
GPIOA->AFR[0] |= (0x05 << 5 * 4); // AF5 for SPI which is 0101 (it's a 4bit variation)
GPIOA->MODER &= ~GPIO_MODER_MODER6; // PIN6
GPIOA->MODER |= GPIO_MODER_MODER6_1;
GPIOA->AFR[0] |= (0x05 << 6 * 4);
GPIOD->MODER &= ~GPIO_MODER_MODER7; // PIN7
GPIOD->MODER |= GPIO_MODER_MODER7_1;
GPIOD->AFR[0] |= (0x05 << 7 * 4);
SPI1->CFG1=(7u << SPI_CFG1_DSIZE_Pos); // 8bit data size
SPI1->CFG2|=SPI_CFG2_MASTER ; // master mode
SPI1->CR1|=SPI_CR1_SPE; // spi enable
SPI1->CR1|=SPI_CR1_CSTART; // transfer start
*(volatile uint8_t *)&SPI1->TXDR = 0x3;