-
大小: 3KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 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發(fā)送接收8位幀結構
SPI_InitStructure.SPI_CPOL??????=?SPI_CPOL_High; //串行同步時鐘的空閑狀態(tài)為高電平
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\
- 上一篇:動態(tài)生成DIY圖片代碼
- 下一篇:mo與po綠色互轉工具
評論
共有 條評論