• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: STM32F103X  SPI2  DMA  LCD  

资源简介

STM32F103X SPI2 DMA 驱动LCD.zip

资源截图

代码片段和文件信息


#include “spi.h“

//以下是SPI模块的初始化代码,配置成主机模式,
//SPI2的初始化

void SPI2_gpio_config(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA ENABLE );//PORTB 时钟使能 
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO ENABLE );//AFIO 时钟使能 

  GPIO_InitStructure.GPIO_Pin    =  LCD_PIN_CLK|  LCD_PIN_MISO | LCD_PIN_MOSI;
GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_AF_PP;  //PB13/14/15复用推挽输出 
GPIO_InitStructure.GPIO_Speed  =  GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);//初始化GPIOB

  GPIO_InitStructure.GPIO_Pin    =  LCD_PIN_RST | LCD_PIN_DCX  ;
GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_Out_PP;  //推挽输出
GPIO_Init(GPIOA &GPIO_InitStructure);//初始化GPIOA

  GPIO_InitStructure.GPIO_Pin    =  LCD_PIN_CS;
GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_Out_PP;  //推挽输出 
GPIO_Init(GPIOB &GPIO_InitStructure);//初始化GPIOA

  GPIO_InitStructure.GPIO_Pin    =  LCD_PIN_BL;
GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_Out_PP;  //推挽输出 
GPIO_Init(GPIOB &GPIO_InitStructure);//初始化GPIOA

LCD_BL_ON;
LCD_RST_1;
LCD_CS_1;

}


void SPI2_Config(void)
{
SPI_InitTypeDef  SPI_InitStructure;

RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2  ENABLE );//SPI2时钟使能 

SPI_I2S_DeInit(SPI2);
  SPI_Cmd(SPI2 DISABLE); //使能SPI外设

SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;  //设置SPI2单向输出
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_2;//波特率预分频值:波特率预分频值为256 初始化时为最低速模式
SPI_InitStructure.SPI_FirstBit  = SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial  = 7; //CRC值计算的多项式
SPI_Init(SPI2 &SPI_InitStructure); 
  SPI_Cmd(SPI2 ENABLE); //使能SPI外设
}  


void  SPI2_DMA_init(void)
{
DMA_InitTypeDef  DMA_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/* Enable the DMA1_Channel5 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

  DMA_DeInit(DMA1_Channel5);
  DMA_InitStructure.DMA_PeripheralbaseAddr = (uint32_t)&SPI2->DR;
  DMA_InitStructure.DMA_MemorybaseAddr   = (uint32_t)0;  //每次启动前会重新赋值
  DMA_InitStructure.DMA_DIR   = DMA_DIR_PeripheralDST;//内存到外设
  DMA_InitStructure.DMA_BufferSize   = 0;  //每次启动前会重新赋值
  DMA_InitStructure.DMA_PeripheralI

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5487  2020-07-03 12:49  STM32F103X SPI2 DMA 驱动LCD\spi.c
     文件        1208  2020-07-03 12:49  STM32F103X SPI2 DMA 驱动LCD\spi.h
     目录           0  2020-07-03 12:53  STM32F103X SPI2 DMA 驱动LCD\

评论

共有 条评论