野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9606|回复: 2

SPI源代码中,GPIO初始化部分的不解

[复制链接]
发表于 2015-6-17 17:36:35 | 显示全部楼层 |阅读模式
官方源代码有:

//  /*!< Configure SPI_FLASH_SPI pins: SCK */
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);

//  /*!< Configure SPI_FLASH_SPI pins: MISO */
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);

//  /*!< Configure SPI_FLASH_SPI pins: MOSI */
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);

//  /*!< Configure SPI_FLASH_SPI_CS_PIN pin: SPI_FLASH Card CS pin */
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);


按照这段代码,PA4引脚(片选)被设置成了推挽输出,其它三只脚都设成了复用推挽输出

可MISO不是主机输入吗?也设成推挽输出如何读数据?是不是由从机拉高拉低电平来操作?

既然是复用,那代码里为什么没打开复用时钟呢?
回复

使用道具 举报

发表于 2015-6-17 17:57:37 | 显示全部楼层
1、开SPI1的时钟用的是这个
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

2、当主机给从机发送字节命令(实际上是4个空指令)的时候,从机就会给主机发送数据,然后主机在SPI1的接收寄存器里面读数据即可
回复 支持 反对

使用道具 举报

发表于 2015-8-7 12:34:39 | 显示全部楼层
fire 发表于 2015-6-17 17:57
1、开SPI1的时钟用的是这个
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

火哥 我也被这个初始化弄晕乎了
零死角玩转STM32的273面 MISO在全双工模式/主模式 GPIO配置为 浮空输入或带上拉输入 ,是什么情况?

1_看图王_看图王.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-10-5 21:18 , Processed in 0.029134 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表