本帖最后由 gaoyang9992006 于 2024-7-24 17:09 编辑
因为要调用M058S的库函数,因此要在ST7735的头文件里包含它
#include "M058S.h"
接下来要实现
RST DC CS的映射
- #define DC_SetLow() P01=0
- #define DC_SetHigh() P01=1
- #define CS_SetLow() P04=0
- #define CS_SetHigh() P04=1
- #define RST_SetLow() P00=0
- #define RST_SetHigh() P00=1
通过宏定义实现函数映射替换
接下来就是通过SPI发送函数实现ST7735的数据发送
- void ST7735_SPI_SendByte(uint8_t byte)
- {
- //LCD_Writ_Bus(byte);
- /* Write to TX register */
- SPI_WRITE_TX0(SPI0, byte);
- /* Trigger SPI data transfer */
- SPI_TRIGGER(SPI0);
- /* Check SPI0 busy status */
- while(SPI_IS_BUSY(SPI0));
- }
最后就是在主函数里,设置IO工作模式和SPI工作模式
GPIO_SetMode(P0, BIT0|BIT1|BIT4|BIT5|BIT7, GPIO_PMD_OUTPUT);
因为我们只使用了发送功能,在配置SPI时候只配置发送引脚即可,另外CS我们自己实现的拉高拉低,因此也可以不配置SPI的SS
- /* Select HCLK as the clock source of SPI0 */
- CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_HCLK, MODULE_NoMsk);
- /* Enable SPI0 peripheral clock */
- CLK_EnableModuleClock(SPI0_MODULE);
- /* Setup SPI0 multi-function pins */
- SYS->P0_MFP &= ~( SYS_MFP_P05_Msk | SYS_MFP_P07_Msk);
- SYS->P0_MFP |= ( SYS_MFP_P05_MOSI | SYS_MFP_P07_SPICLK);
最后设置SPI工作模式和位宽,频率
- /*---------------------------------------------------------------------------------------------------------*/
- /* Init SPI */
- /*---------------------------------------------------------------------------------------------------------*/
- /* Configure as a master, clock idle low, 8-bit transaction, drive output on falling clock edge and latch input on rising edge. */
- /* Set IP clock divider. SPI clock rate = 2 MHz */
- SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 8, 2000000);
接下来就可以使用ST7735的函数使用SPI实现屏幕点亮了
- ST7735_Init();
- ST7735_FillScreen(ST7735_BLACK);
- ST7735_DrawRectangle(0,0+24,10,5,ST7735_YELLOW);CLK_SysTickDelay(250000);
- ST7735_DrawRectangle(15,5+24,10,20,ST7735_BLUE);CLK_SysTickDelay(250000);
- ST7735_DrawRectangle(30,25+24,10,10,ST7735_RED);CLK_SysTickDelay(250000);
|