stm32之SPI随笔2

本文主要探讨了STM32的SPI编程,包括初始化SPI结构体和功能操作函数的实现,详细介绍了在main.c及bsp_flash_spi.c中的关键代码,并在bsp_spi_flash.h中定义的相关函数。
摘要由CSDN通过智能技术生成

【>>>>>以下所写如果难以理解的部分或有什么建议,可留言交流<<<<<】

spi编程要点:

1 初始化spi结构体

2 功能操作函数

 

1主体函数部分main.c

uint8_t readbuff[4096];
uint8_t Writebuff[4096];
int main(void)
{	
        uint32_t id;
	

	uint16_t i;
	//串口
	USART_Config();


	//spi配置
	SPI_FLASH_Config();
        //读取设备id
	id=SPI_Read_ID();
	printf("0x%x\r\n",id);
	
	
	
	//清除扇区
	SPI_FLASH_SectorErase(0);
	for(i=0;i<4096;i++)
	{
		Writebuff[i]=i;
	}
        //写数据
	SPI_FLASH_BufferWrite(Writebuff,0,4096);
        //从里面读取数据
	SPI_Read_Data(0,readbuff,4096);
	for(i=0;i<4096;i++)
	{
	
		printf("0x%x",readbuff[i]);
		if(i%10==0)
		{
			printf("\n");
		}
	}
}

2 相关函数bsp_flash_spi.c

#include "bsp_spi.h"


uint16_t FLASH_ADDRESS;

static __IO uint32_t  SPITimeout = SPIT_LONG_TIMEOUT;   



static  uint32_t SPI_TIMEOUT_UserCallback(uint8_t errorCode);


/*spi_flash 配置*/
void SPI_FLASH_Config(void){

	GPIO_InitTypeDef GPIO_InitStructure;
	SPI_InitTypeDef SPI_InitStructure;

	// 打开SPI GPIO的时钟
	FLASH_SPI_GPIO_APBxClkCmd(FLASH_SPI_GPIO_CLK, ENABLE);
	// 打开SPI外设的时钟
	FLASH_SPI_APBxClkCmd(FLASH_SPI_CLK, ENABLE);

	// 将FLASH_SPI SCL 的GPIO配置为推挽复用模式
	GPIO_InitStructure.GPIO_Pin = FLASH_SPI_SCLK_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(FLASH_SPI_SCLK_GPIO_PORT, &GPIO_InitStructure);

         // 将FLASH_SPI MOSI  的GPIO配置为浮空输入模式
	GPIO_InitStructure.GPIO_Pin = FLASH_SPI_MOSI_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(FLASH_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
	// 将FLASH_SPI MISO  的GPIO配置为浮空输入模式
	GPIO_InitStructure.GPIO_Pin = FLASH_SPI_MISO_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(FLASH_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
	
	
	//初始化CS引脚,因为是用软件,所以为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = FLASH_SPI_CS_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值