OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4644|回复: 1

关于SPI,spiinit函数的一个小问题

[复制链接]

58

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-27
在线时间
21 小时
发表于 2016-3-13 22:03:34 | 显示全部楼层 |阅读模式
1金钱
void SPI1_Init(void)
{
    u16 tempreg=0;
    RCC->AHB1ENR|=1<<0; //使能 PORTA 时钟
    RCC->APB2ENR|=1<<12; //SPI1 时钟使能
    GPIO_Set(GPIOB,7<<3,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PB3~5 复用功能输出

    GPIO_AF_Set(GPIOB,3,5); //PB3,AF5
    GPIO_AF_Set(GPIOB,4,5); //PB4,AF5
    GPIO_AF_Set(GPIOB,5,5); //PB5,AF5
    //这里只针对 SPI 口初始化
    RCC->APB2RSTR|=1<<12; //复位 SPI1
    RCC->APB2RSTR&=~(1<<12);//停止复位 SPI1
    tempreg|=0<<10; //全双工模式
    tempreg|=1<<9; //软件 nss 管理
    tempreg|=1<<8;
    tempreg|=1<<2; //SPI 主机
    tempreg|=0<<11; //8 位数据格式
    tempreg|=1<<1; //空闲模式下 SCK 为 1 CPOL=1
    tempreg|=1<<0; //数据采样从第 2 个时间边沿开始,CPHA=1
    //对 SPI1 属于 APB2 的外设.时钟频率最大为 84Mhz 频率.
    tempreg|=7<<3; //Fsck=Fpclk1/256
    tempreg|=0<<7; //MSB First
    tempreg|=1<<6; //SPI 启动
    SPI1->CR1=tempreg; //设置 CR1
    SPI1->I2SCFGR&=~(1<<11);//选择 SPI 模式
    SPI1_ReadWriteByte(0xff);//启动传输
}


这是原子哥原来的一个SPIINIT的函数,没改过,请问这里最多就用到了GPIOB和GPIOG,请问为什么要初始化GPIOA呢?

最佳答案

查看完整内容[请看2#楼]

没用到,就可以去掉。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-3-13 22:03:35 | 显示全部楼层
没用到,就可以去掉。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 09:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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