查看: 2551|回复: 2

【LPC845月饼板】+ 圆形LCD屏幕显示

[复制链接]
  • TA的每日心情
    奋斗
    昨天 11:19
  • 签到天数: 2405 天

    连续签到: 114 天

    [LV.Master]伴坛终老

    84

    主题

    2万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22337
    最后登录
    2025-8-23
    发表于 2022-10-19 10:09:15 | 显示全部楼层 |阅读模式
    本帖最后由 流水源 于 2022-10-19 10:09 编辑

    废话不多说,直接开干

    这个圆形LCD屏幕驱动型号是GC9A01芯片,使用SPI接口,屏幕大小1.28寸的,分辨率240*240的。价格在20左右。引脚说明如下:

    0.jpg


    下面来说一说如何点亮屏幕。

    首先我们要根据电路图知道屏幕使用的IO和SPI接口。LPC845有这样一个好处,那就是基本所有外设都可以通过矩阵方式映射到任意管脚。这样就可以在电路设计中基本可以使用任意IO,而不用为搞错外设脚位担心。

    如下图电路中就可以找到屏幕使用管脚。

    1.jpg

    2.jpg


    接下来初始化这些管脚以及SPI接口。初始化代码如下

    1. void drv_spi_gpio_init(void)
    2. {
    3.     CLOCK_EnableClock(kCLOCK_Iocon);
    4.     CLOCK_EnableClock(kCLOCK_Gpio0);
    5.     CLOCK_EnableClock(kCLOCK_Gpio1);
    6.    
    7.     CLOCK_EnableClock(kCLOCK_Spi0);
    8.     CLOCK_EnableClock(kCLOCK_Spi1);
    9.    
    10.     CLOCK_Select(kSPI0_Clk_From_MainClk);
    11.     CLOCK_Select(kSPI1_Clk_From_MainClk);
    12.    
    13.     RESET_PeripheralReset(kSPI0_RST_N_SHIFT_RSTn);
    14.     RESET_PeripheralReset(kSPI1_RST_N_SHIFT_RSTn);

    15.     gpio_pin_config_t SPILCD_IN_config = {
    16.         .pinDirection = kGPIO_DigitalInput,
    17.         .outputLogic = 1U,
    18.     };
    19.     gpio_pin_config_t SPILCD_IOH_config = {
    20.         .pinDirection = kGPIO_DigitalOutput,
    21.         .outputLogic = 1U,
    22.     };
    23.     gpio_pin_config_t SPILCD_IOL_config = {
    24.         .pinDirection = kGPIO_DigitalOutput,
    25.         .outputLogic = 0U,
    26.     };
    27.     /* Initialize GPIO functionality on pin */
    28.     GPIO_PinInit(GPIO, 0, 7, &SPILCD_IOL_config);//LCD_BLK
    29.     GPIO_PinInit(GPIO, 1, 6, &SPILCD_IOH_config);//LCD_DC
    30.     GPIO_PinInit(GPIO, 1, 7, &SPILCD_IOH_config);//LCD_RST
    31.     GPIO_PinInit(GPIO, 1,18, &SPILCD_IOH_config);//LCD_CS
    32.     GPIO_PinInit(GPIO, 1,19, &SPILCD_IOH_config);//LCD_CLK
    33.     GPIO_PinInit(GPIO, 0, 6, &SPILCD_IOH_config);//LCD_MOSI
    34.    
    35.     GPIO_PinInit(GPIO, 1,13, &SPILCD_IOH_config);//RGB_MOSI
    36.    
    37.     GPIO_PinInit(GPIO, 1,8, &SPILCD_IOH_config); //FLASH_CS
    38.     GPIO_PinInit(GPIO, 1,9, &SPILCD_IN_config); //FLASH_MISO
    39.     GPIO_PinInit(GPIO, 0,12, &SPILCD_IOH_config);//FLASH_CLK
    40.     GPIO_PinInit(GPIO, 0,13, &SPILCD_IOH_config);//FLASH_MOSI
    41.    
    42.     const uint32_t spilcd_ioc = (/* Selects pull-up function */
    43.                               IOCON_PIO_MODE_PULLUP |
    44.                               /* Enable hysteresis */
    45.                               IOCON_PIO_HYS_EN |
    46.                               /* Input not invert */
    47.                               IOCON_PIO_INV_DI |
    48.                               /* Disables Open-drain function */
    49.                               IOCON_PIO_OD_DI |
    50.                               /* Bypass input filter */
    51.                               IOCON_PIO_SMODE_BYPASS |
    52.                               /* IOCONCLKDIV0 */
    53.                               IOCON_PIO_CLKDIV0);
    54.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_7,  spilcd_ioc);
    55.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_6,  spilcd_ioc);
    56.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_7,  spilcd_ioc);
    57.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_18, spilcd_ioc);   
    58.    
    59.     /* Enables clock for switch matrix.: enable */
    60.     const uint32_t SPI_LCD_CLK = (/* Selects pull-up function */
    61.                                     IOCON_PIO_MODE_PULLUP |
    62.                                     /* Enable hysteresis */
    63.                                     IOCON_PIO_HYS_EN |
    64.                                     /* Input not invert */
    65.                                     IOCON_PIO_INV_DI |
    66.                                     /* Disables Open-drain function */
    67.                                     IOCON_PIO_OD_DI |
    68.                                     /* Bypass input filter */
    69.                                     IOCON_PIO_SMODE_BYPASS |
    70.                                     /* IOCONCLKDIV0 */
    71.                                     IOCON_PIO_CLKDIV0);
    72.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_19, SPI_LCD_CLK);

    73.     const uint32_t SPI_LCD_MOSI = (/* Selects pull-up function */
    74.                                     IOCON_PIO_MODE_PULLUP |
    75.                                     /* Enable hysteresis */
    76.                                     IOCON_PIO_HYS_EN |
    77.                                     /* Input not invert */
    78.                                     IOCON_PIO_INV_DI |
    79.                                     /* Disables Open-drain function */
    80.                                     IOCON_PIO_OD_DI |
    81.                                     /* Bypass input filter */
    82.                                     IOCON_PIO_SMODE_BYPASS |
    83.                                     /* IOCONCLKDIV0 */
    84.                                     IOCON_PIO_CLKDIV0);
    85.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_6, SPI_LCD_MOSI);
    86.    
    87.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_13, SPI_LCD_MOSI);  //RGB_IO=MOSI
    88.    
    89.     const uint32_t SPI_MISO = (/* Selects pull-up function */
    90.                                     0 |
    91.                                     /* Enable hysteresis */
    92.                                     IOCON_PIO_HYS_EN |
    93.                                     /* Input not invert */
    94.                                     IOCON_PIO_INV_DI |
    95.                                     /* Disables Open-drain function */
    96.                                     IOCON_PIO_OD_DI |
    97.                                     /* Bypass input filter */
    98.                                     IOCON_PIO_SMODE_BYPASS |
    99.                                     /* IOCONCLKDIV0 */
    100.                                     IOCON_PIO_CLKDIV0);
    101.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_9, SPI_MISO);   //f_miso

    102.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO1_8,   spilcd_ioc);    //f_cs
    103.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_12,  spilcd_ioc);   //f_clk
    104.     IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_13,  spilcd_ioc);   //f_mosi
    105.    
    106.     CLOCK_EnableClock(kCLOCK_Swm);
    107.    
    108.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_SCK,   kSWM_PortPin_P1_19);
    109.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_MOSI,  kSWM_PortPin_P0_6);
    110.    
    111.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_MOSI,  kSWM_PortPin_P1_13);
    112.    
    113.     /* Disable clock for switch matrix. */
    114.     CLOCK_DisableClock(kCLOCK_Swm);
    115.    
    116.     spi_master_config_t userConfig = {0};
    117.     uint32_t srcFreq               = 0U;
    118.     /* Note: The slave board using interrupt way, slave will spend more time to write data
    119.      *       to TX register, to prevent TX data missing in slave, we will add some delay between
    120.      *       frames and capture data at the second edge, this operation will make the slave
    121.      *       has more time to prapare the data.
    122.      */
    123.    
    124.     SPI_MasterGetDefaultConfig(&userConfig);
    125.     userConfig.baudRate_Bps           = 30000000;
    126.     userConfig.sselNumber             = kSPI_Ssel0Assert;
    127.     userConfig.clockPolarity          = kSPI_ClockPolarityActiveHigh;
    128.     userConfig.clockPhase             = kSPI_ClockPhaseFirstEdge;
    129.     userConfig.direction              = kSPI_MsbFirst;
    130.     userConfig.delayConfig.preDelay   = 0x0U;
    131.     userConfig.delayConfig.postDelay  = 0x0U;
    132.     userConfig.delayConfig.frameDelay = 0x0U;
    133.     userConfig.delayConfig.transferDelay = 0x0U;
    134.     srcFreq                           = CLOCK_GetFreq(kCLOCK_MainClk);
    135.     SPI_MasterInit(SPI0, &userConfig, srcFreq);
    136.    
    137.     userConfig.baudRate_Bps           = 6000000;
    138.     SPI_MasterInit(SPI1, &userConfig, srcFreq);

    139. }




    140. SPI_Type * spi_table[2]=
    141. {
    142.     SPI0,
    143.     SPI1,
    144. };

    145. void spi_pre_h(void)
    146. {
    147.     CLOCK_EnableClock(kCLOCK_Swm);
    148.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_MISO,  kSWM_PortPin_P1_9);  //F_MISO
    149.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_MOSI,  kSWM_PortPin_P0_13); //F_MOSI
    150.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_SCK ,  kSWM_PortPin_P0_12); //F_CLK
    151.     CLOCK_DisableClock(kCLOCK_Swm);
    152.     SPI_MasterSetBaudRate(SPI1,30000000, CLOCK_GetFreq(kCLOCK_MainClk));
    153. }

    154. void spi_pre_l(void)
    155. {
    156.     CLOCK_EnableClock(kCLOCK_Swm);
    157.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_MOSI,  kSWM_PortPin_P1_13); //RGB_IO
    158.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_MISO,  0XFF);  //
    159.     SWM_SetMovablePinSelect(SWM0, kSWM_SPI1_SCK ,  0XFF);  //
    160.     CLOCK_DisableClock(kCLOCK_Swm);
    161.     SPI_MasterSetBaudRate(SPI1,6000000, CLOCK_GetFreq(kCLOCK_MainClk));
    162. }

    163. void spi_writebyte(uint8_t index,uint8_t TxData)
    164. {
    165.     spi_table[index]->TXDATCTL = TxData | 0X077E0000;
    166.     while ((spi_table[index]->STAT & SPI_STAT_TXRDY_MASK) == 0U){;}
    167. }

    168. uint8_t spi_readbyte(uint8_t index)
    169. {
    170.     uint8_t re;
    171.     spi_table[index]->TXDATCTL = 0xff | 0X073E0000;
    172.     while ((spi_table[index]->STAT & SPI_STAT_RXRDY_MASK) == 0U){;}
    173.     re = spi_table[index]->RXDAT & 0XFF;
    174.     return re;
    175. }

    复制代码
    屏幕也要初始,再来初始化lcd屏幕,初始化代码都是网上找的,找准型号就行。

    1. void spilcd_init(void)
    2. {
    3.         spilcd_gpio_init();
    4.         
    5.         LCD_RST_CLR();
    6.         delay_ms(10);
    7.         LCD_RST_SET();
    8.         delay_ms(10);
    9.         
    10.         LCD_BLK_SET();
    11.     delay_ms(10);
    12.    
    13. //        LCD_CS_CLR();
    14.    
    15.     LCD_WR_REG(0xFE);
    16.         LCD_WR_REG(0xEF);

    17.         LCD_WR_REG(0x84);
    18.         LCD_WR_DATA8(0x40);


    19.         LCD_WR_REG(0xB6);
    20.         LCD_WR_DATA8(0x00);
    21.         LCD_WR_DATA8(0x20);

    22.         LCD_WR_REG(0x36);
    23.         if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
    24.         else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
    25.         else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x68);
    26.         else LCD_WR_DATA8(0xA8);

    27.         LCD_WR_REG(0x3A);
    28.         LCD_WR_DATA8(0x05);

    29.         LCD_WR_REG(0xC3);
    30.         LCD_WR_DATA8(0x13);
    31.         LCD_WR_REG(0xC4);
    32.         LCD_WR_DATA8(0x13);

    33.         LCD_WR_REG(0xC9);
    34.         LCD_WR_DATA8(0x22);


    35.         LCD_WR_REG(0xF0);
    36.         LCD_WR_DATA8(0x45);
    37.         LCD_WR_DATA8(0x09);
    38.         LCD_WR_DATA8(0x08);
    39.         LCD_WR_DATA8(0x08);
    40.         LCD_WR_DATA8(0x26);
    41.          LCD_WR_DATA8(0x2A);

    42.          LCD_WR_REG(0xF1);
    43.          LCD_WR_DATA8(0x43);
    44.          LCD_WR_DATA8(0x70);
    45.          LCD_WR_DATA8(0x72);
    46.          LCD_WR_DATA8(0x36);
    47.          LCD_WR_DATA8(0x37);
    48.          LCD_WR_DATA8(0x6F);


    49.          LCD_WR_REG(0xF2);
    50.          LCD_WR_DATA8(0x45);
    51.          LCD_WR_DATA8(0x09);
    52.          LCD_WR_DATA8(0x08);
    53.          LCD_WR_DATA8(0x08);
    54.          LCD_WR_DATA8(0x26);
    55.          LCD_WR_DATA8(0x2A);

    56.          LCD_WR_REG(0xF3);
    57.          LCD_WR_DATA8(0x43);
    58.          LCD_WR_DATA8(0x70);
    59.          LCD_WR_DATA8(0x72);
    60.          LCD_WR_DATA8(0x36);
    61.          LCD_WR_DATA8(0x37);
    62.          LCD_WR_DATA8(0x6F);

    63.         LCD_WR_REG(0xE8);
    64.         LCD_WR_DATA8(0x34);

    65.         LCD_WR_REG(0x66);
    66.         LCD_WR_DATA8(0x3C);
    67.         LCD_WR_DATA8(0x00);
    68.         LCD_WR_DATA8(0xCD);
    69.         LCD_WR_DATA8(0x67);
    70.         LCD_WR_DATA8(0x45);
    71.         LCD_WR_DATA8(0x45);
    72.         LCD_WR_DATA8(0x10);
    73.         LCD_WR_DATA8(0x00);
    74.         LCD_WR_DATA8(0x00);
    75.         LCD_WR_DATA8(0x00);

    76.         LCD_WR_REG(0x67);
    77.         LCD_WR_DATA8(0x00);
    78.         LCD_WR_DATA8(0x3C);
    79.         LCD_WR_DATA8(0x00);
    80.         LCD_WR_DATA8(0x00);
    81.         LCD_WR_DATA8(0x00);
    82.         LCD_WR_DATA8(0x01);
    83.         LCD_WR_DATA8(0x54);
    84.         LCD_WR_DATA8(0x10);
    85.         LCD_WR_DATA8(0x32);
    86.         LCD_WR_DATA8(0x98);

    87.         LCD_WR_REG(0x35);
    88.         LCD_WR_REG(0x21);

    89.         LCD_WR_REG(0x11);
    90.     LCD_CS_SET();
    91.         delay_ms(120);
    92.         LCD_WR_REG(0x29);
    93.     LCD_CS_SET();
    94.         delay_ms(20);
    95. }
    复制代码


    屏幕初始化之后,暂时还看不到屏幕效果,下面就是对屏幕填充颜色和绘制图片了,代码:

    1. void spilcd_draw_bitmap(uint16_t x,uint16_t y,uint16_t w,uint16_t h,const uint8_t *pbuff)
    2. {
    3.     uint8_t data[4];
    4.     uint16_t x1,y1,x2,y2;
    5.     uint32_t send_size   = w * h * 2;
    6.     x1 = x;
    7.     y1 = y;
    8.     x2 = x+w-1;
    9.     y2 = y+h-1;
    10. //    LCD_CS_CLR();
    11.     /*Column addresses*/
    12.     SPILCD_WriteCmd(0x2A);
    13.     data[0] = (x1 >> 8) & 0xFF;
    14.     data[1] = x1 & 0xFF;
    15.     data[2] = (x2 >> 8) & 0xFF;
    16.     data[3] = x2 & 0xFF;
    17.     SPILCD_WriteData(data[0]);
    18.     SPILCD_WriteData(data[1]);
    19.     SPILCD_WriteData(data[2]);
    20.     SPILCD_WriteData(data[3]);

    21.     /*Page addresses*/
    22.     SPILCD_WriteCmd(0x2B);
    23.     data[0] = (y1 >> 8) & 0xFF;
    24.     data[1] = y1 & 0xFF;
    25.     data[2] = (y2 >> 8) & 0xFF;
    26.     data[3] = y2 & 0xFF;
    27.     SPILCD_WriteData(data[0]);
    28.     SPILCD_WriteData(data[1]);
    29.     SPILCD_WriteData(data[2]);
    30.     SPILCD_WriteData(data[3]);

    31.     /*Memory write*/
    32.     SPILCD_WriteCmd(0x2C);
    33.     SPILCD_WriteMultiData(pbuff, send_size);
    34.     LCD_CS_SET();
    35. }

    36. void spilcd_fill(uint16_t x,uint16_t y,uint16_t w,uint16_t h,uint16_t color)
    37. {
    38.     uint8_t data[4];
    39.     uint16_t x1,y1,x2,y2;
    40.     uint32_t send_size   = w * h;
    41.     x1 = x;
    42.     y1 = y;
    43.     x2 = x+w-1;
    44.     y2 = y+h-1;

    45.     /*Column addresses*/
    46.     SPILCD_WriteCmd(0x2A);
    47.     data[0] = (x1 >> 8) & 0xFF;
    48.     data[1] = x1 & 0xFF;
    49.     data[2] = (x2 >> 8) & 0xFF;
    50.     data[3] = x2 & 0xFF;
    51.     SPILCD_WriteData(data[0]);
    52.     SPILCD_WriteData(data[1]);
    53.     SPILCD_WriteData(data[2]);
    54.     SPILCD_WriteData(data[3]);

    55.     /*Page addresses*/
    56.     SPILCD_WriteCmd(0x2B);
    57.     data[0] = (y1 >> 8) & 0xFF;
    58.     data[1] = y1 & 0xFF;
    59.     data[2] = (y2 >> 8) & 0xFF;
    60.     data[3] = y2 & 0xFF;
    61.     SPILCD_WriteData(data[0]);
    62.     SPILCD_WriteData(data[1]);
    63.     SPILCD_WriteData(data[2]);
    64.     SPILCD_WriteData(data[3]);

    65.     /*Memory write*/
    66.     SPILCD_WriteCmd(0x2C);
    67.     LCD_DC_SET();
    68.     while(send_size--)
    69.     {
    70.         SPI0->TXDATCTL = ((color>>8)&0xff) | 0X077E0000;
    71.         while ((SPI0->STAT & SPI_STAT_TXRDY_MASK) == 0U){;}
    72.         SPI0->TXDATCTL = (color&0xff) | 0X077E0000;
    73.         while ((SPI0->STAT & SPI_STAT_TXRDY_MASK) == 0U){;}
    74.     }
    75.     LCD_CS_SET();
    76. }
    复制代码
    好了,下面就可以调用填充颜色和绘制图片测试了。

    main函数:


    1. #include <stdio.h>
    2. #include "main.h"

    3. #include "board.h"
    4. #include "clock_config.h"
    5. #include "pin_mux.h"

    6. #include "drv_gpio.h"
    7. #include "drv_spi.h"
    8. #include "drv_i2c.h"

    9. #include "drv_spilcd.h"
    10. #include "picture.h"

    11. /*******************************************************************************
    12. * Definitions
    13. ******************************************************************************/


    14. /*******************************************************************************
    15. * Prototypes
    16. ******************************************************************************/


    17. /*******************************************************************************
    18. * Variables
    19. ******************************************************************************/
    20. volatile uint32_t g_systickCounter;
    21. volatile uint32_t rgb_number;
    22. fsm_pt_t    pt_key_scan;
    23. /*******************************************************************************
    24. * Code
    25. ******************************************************************************/
    26. void SysTick_Handler(void)
    27. {
    28.     if(pt_key_scan.time)    pt_key_scan.time--;
    29.     if (g_systickCounter)   g_systickCounter--;
    30. }

    31. void SysTick_DelayTicks(uint32_t n)
    32. {
    33.     g_systickCounter = n;
    34.     while (g_systickCounter != 0U){;}
    35. }


    36. void keyscan_fsm(fsm_pt_t *pt)
    37. {

    38.     PT_BEGIN(pt);
    39.     //init

    40.     //loop
    41.     while(1)
    42.     {
    43.         if(GPIO->B[1][4] == 0)  //SW0
    44.         {
    45.             if(rgb_number < 1000)  rgb_number ++;
    46.             DbgConsole_Printf("key:%d\r\n",rgb_number);
    47.         }
    48.         
    49.         if(GPIO->B[0][15] == 0)  //SW1
    50.         {
    51.             if(rgb_number)  rgb_number --;
    52.             DbgConsole_Printf("key:%d\r\n",rgb_number);
    53.         }
    54.         PT_WAIT_TIME(pt,10);        
    55.     }
    56.     PT_END(pt);
    57. }


    58. /*!
    59. * @brief Main function
    60. */
    61. int main(void)
    62. {
    63.     BOARD_InitBootClocks();
    64.     SysTick_Config(SystemCoreClock / 1000U);
    65.     init_cycle_counter(true);
    66.    
    67.     BOARD_InitBootPins();
    68.     drv_gpio_init();
    69.     BOARD_InitDebugConsole();
    70.    
    71.     drv_spi_gpio_init();
    72.     drv_i2c_gpio_init();
    73.    
    74.     DbgConsole_Printf("LPC845 Mooncake Board Test!\r\n");
    75.    
    76.     spilcd_init();
    77.    
    78.     __cycleof__("lcd_fresh_time(n/30000=X ms):")
    79.     {
    80.         spilcd_fill(0,0,240,240,LCD_RED);
    81.     }
    82.     delay_ms(500);
    83.     __cycleof__("lcd_fresh_time(n/30000=X ms):")
    84.     {
    85.         spilcd_fill(0,0,240,240,LCD_GREEN);
    86.     }
    87.     delay_ms(500);
    88.     __cycleof__("lcd_fresh_time(n/30000=X ms):")
    89.     {
    90.         spilcd_fill(0,0,240,240,LCD_BLUE);
    91.     }
    92.     delay_ms(500);
    93.     __cycleof__("show 40*40 picture time:")
    94.     {
    95.         spilcd_draw_bitmap(100,100,40,40,(uint8_t *)gImage_1);
    96.     }
    97.     delay_ms(500);
    98.         
    99.         while(1)
    100.         {
    101.         keyscan_fsm(&pt_key_scan);
    102.         GPIO_PortToggle(GPIO, 0, 1u << 0);  //led灯
    103.         }
    104. }
    复制代码
    效果如下:

    1.gif


    顺便对刷屏时间做了测量,填充整屏花了123ms左右。LPC845使用30MHz。刷屏比较慢。需要多优化一下了。下面测量的数据是时钟周期数,刷屏时间根据周期数除以时钟频率30MHz。由于LPC845的falsh不够,就没有刷整屏图片了。

    3.jpg


    所有资料都在下面压缩包了。有些需要安装一下pack。

    lpc845_mooncake.zip (16.41 MB, 下载次数: 5)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3922

    主题

    7540

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39974
    最后登录
    2025-8-21
    发表于 2022-10-24 11:15:55 | 显示全部楼层
    干的漂亮
    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 22:25
  • 签到天数: 1127 天

    连续签到: 21 天

    [LV.10]以坛为家III

    28

    主题

    4320

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5893
    最后登录
    2025-8-23
    发表于 2022-11-1 09:52:30 | 显示全部楼层
    不错不错,谢谢楼主分享
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-24 04:15 , Processed in 0.085146 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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