stm32 - 在 stm32f4 和 arduino 之间通信时出现 SPI 问题
问题描述
在我没有 HAL 库的 spi 代码中,如果我发送任何数据,它默认发送为 0xFF,我无法发送数据而不是 0xFF。这是我的代码:
#include <stm32f4xx.h>
uint8_t i = 100;
int j = 0;
uint8_t data = 82;
void afio_config(void);
void spi_init(void);
int main(void)
{
afio_config();
spi_init();
NVIC_EnableIRQ(SPI2_IRQn);
while(1)
{
}
}
void afio_config()
{
RCC -> AHB1ENR |= (1<<1)|(1<<2);
RCC -> APB1ENR |= (1<<14);
GPIOB -> MODER |= (1<<21)|(1<<24);
GPIOC -> MODER |= (1<<7)|(1<<5);
GPIOB ->OTYPER &= ~((1<<12)&(1<<10));
GPIOC ->OTYPER &= ~((1<<2)&(1<<3));
GPIOB -> OSPEEDR |= (1<<24)|(1<<20);
GPIOC -> OSPEEDR |= (1<<4)|(1<<6);
GPIOB -> PUPDR |= (1<<25)|(1<<21);
GPIOC -> PUPDR |= (1<<4)|(1<<6);
GPIOC -> AFR[0] |= (1<<14)|(1<<12)|(1<<10)|(1<<8);
GPIOB -> AFR[1] |= (1<<10)|(1<<8);
}
void spi_init()
{
SPI2 ->CR1 |= (1<<4)|(1<<5);
SPI2 ->CR1 |= (1<<15)|(1<<14);
SPI2 ->CR1 |= (1<<9)|(1<<8);
SPI2 ->CR2 |= (1<<7);
SPI2 ->CR1 |= (1<<2);
SPI2 ->CR1 |= (1<<6);
GPIOB ->ODR &= ~(1<<12);
}
void SPI2_IRQHandler()
{
SPI2 ->DR = data;
}
解决方案
推荐阅读
- c# - 如何使用 Newtonsoft 解析这个 Json
- python - 如何使用 cx_freeze 冻结一些 python 测试?
- matlab - 如何计算代表性相似度矩阵值是否显着
- php - 如何从 for 循环的输出中删除最后一个逗号
- python - 在 Python 中检查文件是否存在于 GCS 存储桶中并搜索部分文件名的最佳方法是什么?
- assembly - 对一个简单的 helloworld nasm 程序的 strace 输出感到困惑
- material-ui - Appbar中flex中的中心按钮
- reactjs - 为什么使用相同状态调用 useState 时我的组件会呈现?
- javascript - 如何使这个 JS 函数适用于每个 div
- excel - 如何在excel同一行输入数据和公式