MCU的GPIO模拟SPI源代码汇总.docx
《MCU的GPIO模拟SPI源代码汇总.docx》由会员分享,可在线阅读,更多相关《MCU的GPIO模拟SPI源代码汇总.docx(10页珍藏版)》请在冰豆网上搜索。
MCU的GPIO模拟SPI源代码汇总
MCU的GPIO模拟SPI源代码
写程序:
voidSPIx_WriteByte(u8TxData
{
u8j=0;
SPI_FLASH_CLK_LOW(;//clk=0
if(TxData&0x80
{SPI_FLASH_DI_HIGH(;}//mosi=1
else
{SPI_FLASH_DI_LOW(;}//mosi=0
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1,一个上升沿写入一位
for(j=0;j<5;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0
if(TxData&0x40
{SPI_FLASH_DI_HIGH(;}//mosi=1
else
{SPI_FLASH_DI_LOW(;}//mosi=0
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;
if(TxData&0x20
{SPI_FLASH_DI_HIGH(;}//mosi=1else
{SPI_FLASH_DI_LOW(;}//mosi=0for(j=0;j<3;j++;//延时SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;
if(TxData&0x10
{SPI_FLASH_DI_HIGH(;}//mosi=1else
{SPI_FLASH_DI_LOW(;}//mosi=0for(j=0;j<3;j++;//延时SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;
if(TxData&0x08
{SPI_FLASH_DI_HIGH(;}//mosi=1else
{SPI_FLASH_DI_LOW(;}//mosi=0for(j=0;j<3;j++;//延时SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;
if(TxData&0x04
{SPI_FLASH_DI_HIGH(;}//mosi=1else
{SPI_FLASH_DI_LOW(;}//mosi=0for(j=0;j<3;j++;//延时SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;
if(TxData&0x02
{SPI_FLASH_DI_HIGH(;}//mosi=1else
{SPI_FLASH_DI_LOW(;}//mosi=0for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_LOW(;//clk=0
if(TxData&0x01
{SPI_FLASH_DI_HIGH(;}
else
{SPI_FLASH_DI_LOW(;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0}
读程序0x80==0x80
u8SPIx_ReadByte(void
{
u8i=0,j=0;
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1
if(GPIOC->IDR&0x80==0x80
{i=i+0x80;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0,下降沿读数for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80
{i=i+0x40;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80
{i=i+0x20;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80
{i=i+0x10;}
for(j=0;j<3;j++;//延时
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80{i=i+0x08;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80{i=i+0x04;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80{i=i+0x02;}
for(j=0;j<3;j++;//延时
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x80==0x80
{i=i+0x01;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
returni;
}
读程序0x40==0x40
u8SPIx_ReadByte(void
{
u8i=0,j=0;
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1
if(GPIOC->IDR&0x40==0x40
{i=i+0x80;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0,下降沿读数for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x40;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x20;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x10;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x08;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x04;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40{i=i+0x02;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x40==0x40
{i=i+0x01;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
returni;
}
读程序0x20==0x20
u8SPIx_ReadByte(void
{
u8i=0,j=0;
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1
if(GPIOC->IDR&0x20==0x20
{i=i+0x80;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0,下降沿读数for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
{i=i+0x40;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x20==0x20{i=i+0x20;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x20==0x20{i=i+0x10;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
{i=i+0x08;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x20==0x20{i=i+0x04;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x20==0x20{i=i+0x02;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x20==0x20
{i=i+0x01;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
returni;
}
读程序0x10==0x10
读程序0x08==0x08
读程序0x04==0x04
读程序0x02==0x02
u8SPIx_ReadByte(void
{
u8i=0,j=0;
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_HIGH(;//clk=1
if(GPIOC->IDR&0x02==0x02
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;//clk=0,下降沿读数for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02
{i=i+0x40;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02
{i=i+0x20;}
for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02{i=i+0x08;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02{i=i+0x04;}
for(j=0;j<3;j++;//延时SPI_FLASH_CLK_LOW(;
for(j=0;j<5;j++;
SPI_FLASH_CLK_HIGH(;
if(GPIOC->IDR&0x02==0x02
{i=i+0x02;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//延时SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x02==0x02{i=i+0x01;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;returni;}读程序0x01==0x01u8SPIx_ReadByte(void{u8i=0,j=0;for(j=0;j<3;j++;SPI_FLASH_CLK_HIGH(;//延时//clk=1//延时if(GPIOC->IDR&0x01==0x01{i=i+0x80;}for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//clk=0,下降沿读数SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x40;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//延时SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x20;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//延时SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x10;}for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x08;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//延时SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x04;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;//延时SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x02;}for(j=0;j<3;j++;//延时
SPI_FLASH_CLK_LOW(;for(j=0;j<5;j++;SPI_FLASH_CLK_HIGH(;if(GPIOC->IDR&0x01==0x01{i=i+0x01;}for(j=0;j<3;j++;SPI_FLASH_CLK_LOW(;returni;}//延时