将STM32代码直接下载进去 运行没有问题
用GD的固件 重新 把驱动弄了一遍 SPI 怎么都不**在读数据这里
spi_parameter_struct spi_init_struct;
rcu_periph_clock_enable(RCU_GPIOA); // 开 GPIOA 时钟
rcu_periph_clock_enable(RCU_AF);
rcu_periph_clock_enable(RCU_SPI0);// 开启 SPI 时钟
/* 配置 SPI引脚SCK、MISO 和 MOSI为复用推挽模式 */
gpio_pin_remap_config(GPIO_SPI0_REMAP,ENABLE);
gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_5 | GPIO_PIN_7);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
spi_i2s_deinit(SPI0);
spi_struct_para_init(&spi_init_struct);
/* SPI0 parameter config */
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
spi_init_struct.device_mode = SPI_MASTER;
spi_init_struct.frame_size = SPI_FRAMESIZE_16BIT;
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
spi_init_struct.nss = SPI_NSS_SOFT;
spi_init_struct.prescale = SPI_PSC_8;
spi_init_struct.endian = SPI_ENDIAN_MSB;
spi_init(SPI0, &spi_init_struct);
spi_nss_internal_high(SPI0);
spi_enable(SPI0); /* 使能SPI */
卡在下面的读数据
/* 等待发送缓冲区空 */
while(spi_i2s_flag_get(SPI0, SPI_FLAG_TBE) == RESET);
/* 发送一个字节 */
spi_i2s_data_transmit(SPI0, byte);
/* 等待数据接收完毕 */
while(spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE) == RESET);
/* 读取接收到的数据 */
return (uint16_t)spi_i2s_data_receive(SPI0);
代码直接复制的官方例子, 示波器打SCK 没有输出 |