新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2018-4-25
- 在线时间
- 3 小时
|
SPI初始话代码:
void SPI2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //PB13/14/15ÆÕÍ¨ÍÆÍê
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI2, ENABLE);
SPI2_ReadWriteByte(0xff);
}
//@ref SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256
void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
{
SPI2->CR1&=0XFFC7;
SPI2->CR1|=SPI_BaudRatePrescaler;
SPI_Cmd(SPI2,ENABLE);
}
u8 SPI2_ReadWriteByte(u8 TxData)
{
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, TxData);
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET); //调用的时候程序一直在这里死循环
return SPI_I2S_ReceiveData(SPI2);
}
adxl345初始化:
void ADXL345_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOG, ENABLE);
//SPI2_Init();
/* FLASH_CS PG13 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOG, &GPIO_InitStructure);//
GPIO_SetBits(GPIOG,GPIO_Pin_13);
}
主函数//
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "key.h"
#include "adxl345.h"
#include "spi.h"
//x,y:¿ªÊ¼ÏÔʾµÄ×ø±êλÖÃ
//num:ÒªÏÔʾµÄÊý¾Ý
//mode:0,ÏÔʾ¼ÓËÙ¶ÈÖµ;1,ÏÔʾ½Ç¶ÈÖµ;
void ADXL_Show_num(u16 x,u16 y,short num,u8 mode) //ADXL345ÏÔʾ
{
u8 valbuf[3];
if(mode==0) //ÏÔʾ¼ÓËÙ¶ÈÖµ
{
if(num<0)
{
num=-num;
LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16,"-");
}
else
{
LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16," ");
}
valbuf[0]=num/100+0x30;
valbuf[1]=num%100/10+0x30;
valbuf[2]=num%100%10+0x30;
LCD_ShowString(x+10,y,tftlcd_data.width,tftlcd_data.height,16,valbuf);
}
else //ÏÔʾ½Ç¶ÈÖµ
{
if(num<0)
{
num=-num;
LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16,"-");
}
else
{
LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16," ");
}
valbuf[0]=num/10+0x30;
valbuf[1]='.';
valbuf[2]=num%10+0x30;
LCD_ShowString(x+10,y,tftlcd_data.width,tftlcd_data.height,16,valbuf);
}
}
int main()
{
u8 i=0;
u16 adxl345_TYPE=EN25Q64;
SysTick_Init(72);
LED_Init();
USART1_Init(9600);
KEY_Init();
SPI2_Init();
ADXL345_Init();
read_id();
}
|
|