stm32F10x系列,实验23 SPI实验,代码中设置波特率的函数不理解

2019-07-21 07:14发布

SPI实验,原子哥的代码中,有一个设置SPI2速度的函数(也就是设置波特率)

void SPI2_Init(void)
{
...
        GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);  //PB13/14/15上拉

        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //设置SPI工作模式:设置为主SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //设置SPI的数据大小:SPI发送接收8位帧结构
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //串行同步时钟的空闲状态为高电平
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;        //串行同步时钟的第二个跳变沿(上升或下降)数据被采样
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;                //定义波特率预分频的值:波特率预分频值为256
...         
}   

void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
{
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));
        SPI2->CR1&=0XFFC7; //清空CR1寄存器 bit5~3(波特率设置)
        SPI2->CR1|=SPI_BaudRatePrescaler;        //设置SPI2速度
        SPI_Cmd(SPI2,ENABLE);

}


W25Qxx初始化 W25Qxx初始化
明明在初始化时就可以设置SPI2的速度(波特率),为什么要单独拿出来写一个函数?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
齐国漆园吏
1楼-- · 2019-07-21 08:38
我的理解是适应不同需要 这样spi.c的程序不用改 直接再用到的地方进行修改就好了
硕果磊磊
2楼-- · 2019-07-21 13:51
齐国漆园吏 发表于 2018-12-4 19:43
我的理解是适应不同需要 这样spi.c的程序不用改 直接再用到的地方进行修改就好了

嗯,直戳要害

一周热门 更多>