This commit is contained in:
2026-04-23 10:50:18 +08:00
commit a436fda935
844 changed files with 272643 additions and 0 deletions

View File

@ -0,0 +1,101 @@
/*
*************************************************************
ͷ<>ļ<EFBFBD>
*************************************************************
*/
#include "spi.h"
/*
*********************************************************************************************************
* <09><> <20><> <20><>: SPI2_Init()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: SPI2<49><32>ʼ<EFBFBD><CABC>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void SPI2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
// /* Enable SCK, MOSI and MISO GPIO clocks */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//<2F><><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//<2F><><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_6);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//<2F><><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);
/* SPI configuration -------------------------------------------------------*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//SPI<50><49><EFBFBD><EFBFBD>Ϊ˫<CEAA><CBAB>˫<EFBFBD><CBAB>ȫ˫<C8AB><CBAB>
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //<2F><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD>ģʽ:<3A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>spi
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI2, ENABLE); //ʹ<><CAB9>SPI<50><49><EFBFBD><EFBFBD>
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: SPI2_SetSpeed()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: SPI2<49>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
* <09><> <20><> <20><>SpeedSet:0~7
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void SPI2_SetSpeed(u8 SpeedSet)
{
SpeedSet&=0X07; //<2F><><EFBFBD>Ʒ<EFBFBD>Χ
SPI2->CR1&=0XFFC7;
SPI2->CR1|=SpeedSet<<3; //<2F><><EFBFBD><EFBFBD>SPI2<49>ٶ<EFBFBD>
SPI2->CR1|=1<<6; //SPI<50>ʹ<E8B1B8><CAB9>
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: SPI2_ReadWriteByte()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: SPI2<49><32>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
* <09><> <20><> <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TxData
* <20><> <20><> <20><>SPI2->DR;
*********************************************************************************************************
*/
u8 SPI2_ReadWriteByte(u8 TxData)
{
u16 retry=0;
while((SPI2->SR&1<<1)==0) //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
retry++;
if(retry>=0XFFFE)return 0; //<2F><>ʱ<EFBFBD>˳<EFBFBD>
}
SPI2->DR=TxData; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>byte
retry=0;
while((SPI2->SR&1<<0)==0) //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>byte
{
retry++;
if(retry>=0XFFFE)return 0; //<2F><>ʱ<EFBFBD>˳<EFBFBD>
}
return SPI2->DR; //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/***************************** END OF FILE *********************************************************************/