找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1000|回复: 8
收起左侧

PY32F403C驱动SPI液晶屏2.8寸LVGL8演示程序

[复制链接]
ID:14088 发表于 2024-12-8 21:39 | 显示全部楼层 |阅读模式
PY32F403C_LVGL028_V0.1.jpg
普冉的M4单片机系列,资源丰富,价格便宜。实在是太香了,用来驱动2.8寸SPI屏跑LVGL8超值划算。
/**
******************************************************************************
* 文件名程: main.c
* 作    者: 东莞-邓凯歌
* 功    能: 主程序
* 硬    件: PY32F403C_KFB_V0.1
* 说明:
* 软件版本 V1.0.1(2024/4/7 16:02)
******************************************************************************
**/
#include "main.h"
#include "user_uart.h"
#include "user_dma.h"
#include "user_timer.h"
#include "user_gpio.h"
#include "user_spi.h"
#include "lcd_driver.h"
#include "user_touch.h"

#include "lv_port_disp.h"
#include "lv_port_indev.h"
#include "lvgl.h"

#include "gui_guider.h"
#include "events_init.h"
#include "custom.h"

lv_ui guider_ui;

uint8_t aRxBuffer,bRxBuffer;

/* Private define ------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private user code ---------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
static void APP_SystemClockConfig(void);


uint32_t senpwm = 120;
extern uint8_t pwmbit;
uint8_t lcdbit;
/**
  * @brief  Main program.
  * @retval int
  */
int main(void)
{
        /* Reset of all peripherals, Initializes the Systick. */
        HAL_Init();

        /* Configure the system clock */
        APP_SystemClockConfig();
        MX_DMA_Init();
        
        MX_SPI1_Init();
        MX_SPI2_Init();
        MX_GPIO_Init();
//        APP_GpioConfig();
//        MX_USART1_UART_Init();
        MX_TIM1_Init();
        MX_TIM2_Init();
//        MX_TIM6_Init();
//        HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
        
//        LCD_Init();
////        LCD_Fill(0,0,320,240,RED);
////        LCD_Fill(0,0,320,240,WHITE);
//        
//        LCD_DMA_Fill(0,0,320,240,RED);
//        LCD_DMA_Fill(0,0,320,240,WHITE);
        
        lv_init();
    lv_port_disp_init();
        lv_port_indev_init();
        
//        lv_example_textarea_1();
        
        
        custom_init(&guider_ui);         //自定义的功能要放在UI初始化前面,切记!!!!
        setup_ui(&guider_ui);
    events_init(&guider_ui);
        while (1)
        {
                if( tp_dev.calibit)
                {
                  TP_Adjust();
                }else{

                  lv_timer_handler();
                }               
        }
}

/**
  * @brief  System Clock Configuration
  * @param  None
  * @retval None
  */
static void APP_SystemClockConfig(void)
{
        RCC_OscInitTypeDef  OscInitstruct = {0};
        RCC_ClkInitTypeDef  ClkInitstruct = {0};

        OscInitstruct.OscillatorType  = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE |
                                                                  RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSI48M;
        OscInitstruct.HSEState        = RCC_HSE_ON;                               /* Enable HSE */
        OscInitstruct.HSEFreq         = RCC_HSE_16_32MHz;                         /* HSE working frequency range: 16M~32M */
        OscInitstruct.HSI48MState     = RCC_HSI48M_OFF;                           /* Disable HSI48M */
        OscInitstruct.HSIState        = RCC_HSI_ON;                               /* Enable HSI */
        OscInitstruct.LSEState        = RCC_LSE_OFF;                              /* Disable LSE */
//        OscInitstruct.LSEDriver       = RCC_LSEDRIVE_HIGH;                     /* Drive capability level: High */
        OscInitstruct.LSIState        = RCC_LSI_OFF;                              /* Disable LSI */
        OscInitstruct.PLL.PLLState    = RCC_PLL_ON;                              /* Disable PLL */
        OscInitstruct.PLL.PLLSource   = RCC_PLLSOURCE_HSE;                    /* PLL clock source: HSE */
        OscInitstruct.PLL.PLLMUL      = RCC_PLL_MUL7;                         /* PLL multiplication factor: 6 */
        /* Configure Oscillators */
        if(HAL_RCC_OscConfig(&OscInitstruct) != HAL_OK)
        {
                Error_Handler();
        }

        ClkInitstruct.ClockType       = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
        ClkInitstruct.SYSCLKSource    = RCC_SYSCLKSOURCE_PLLCLK;                 /* SYSCLK source select as HSE */
        ClkInitstruct.AHBCLKDivider   = RCC_SYSCLK_DIV1;                      /* AHB clock not divided */
        ClkInitstruct.APB1CLKDivider  = RCC_HCLK_DIV1;                        /* APB1 clock not divided */
        ClkInitstruct.APB2CLKDivider  = RCC_HCLK_DIV2;                        /* APB1 clock divided by 2 */
        /* Configure Clocks */
        if(HAL_RCC_ClockConfig(&ClkInitstruct, FLASH_LATENCY_6) != HAL_OK)
        {
                Error_Handler();
        }
}




/**
  * @brief  This function is executed in case of error occurrence.
  * @param  None
  * @retval None
  */
void Error_Handler(void)
{
  /* Infinite loop */
  while (1)
  {
  }
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     for example: printf("Wrong parameters value: file %s on line %d\r\n", file, line)  */
  /* Infinite loop */
  while (1)
  {
  }
}
#endif /* USE_FULL_ASSERT */


PY32F403C_KFB_LVGL028(V0.1).7z

5.52 MB, 下载次数: 0, 下载积分: 黑币 -5

Schematic_PY32F403C_KFB_V0.1.pdf

151.71 KB, 下载次数: 0, 下载积分: 黑币 -5

回复

使用道具 举报

ID:619259 发表于 2024-12-9 08:51 | 显示全部楼层
我用STC32驱动过这个屏,主屏上到30MHz,刷新速度非常快,不知楼主的这个案例速度如何?
回复

使用道具 举报

ID:14088 发表于 2024-12-9 14:21 | 显示全部楼层
cy009 发表于 2024-12-9 08:51
我用STC32驱动过这个屏,主屏上到30MHz,刷新速度非常快,不知楼主的这个案例速度如何?

F403C 理论上SPI的频率最高达到36M
回复

使用道具 举报

ID:691028 发表于 2024-12-20 13:23 | 显示全部楼层
不知道是什么原因,普冉的单片机死活下载不进固件,研究了大半个月都没成功
回复

使用道具 举报

ID:14088 发表于 2024-12-23 09:21 | 显示全部楼层
0x00000000 发表于 2024-12-20 13:23
不知道是什么原因,普冉的单片机死活下载不进固件,研究了大半个月都没成功

降低SWD下载速度改成500K试试
回复

使用道具 举报

ID:691028 发表于 2024-12-23 17:51 | 显示全部楼层
换了三个DAP和ULINK都试过了,能识别得到芯片,但无法下载固件,尝试问了店家,店家也不清楚
回复

使用道具 举报

ID:378108 发表于 2024-12-31 17:16 | 显示全部楼层
eyancool 发表于 2024-12-23 09:21
降低SWD下载速度改成500K试试

下载器到 MCU 的线太长了,那个线 大于 5cm 下载就会不可靠
回复

使用道具 举报

ID:468456 发表于 2025-4-15 11:48 | 显示全部楼层
请问一下你的py32F403能读取内存卡吗?我用STM32能读,但是用py32没法读取
回复

使用道具 举报

ID:14088 发表于 2025-4-25 18:54 | 显示全部楼层
makej 发表于 2025-4-15 11:48
请问一下你的py32F403能读取内存卡吗?我用STM32能读,但是用py32没法读取

我没用到PY32F403的SDIO功能,看一下PY32F403官方的开发注意事项说明.不能全照STM32来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表