移植正点原子LCD屏程序
一、开发环境介绍+参考视频
笔者使用的是cubemx + cmake + arm-none-eabi-gcc +openocd的开发环境。
注:移植之前一定要找到对应芯片的LCD程序,F1和F4的结构体定义不统一,跨芯片移植需要改的东西很多
二、具体流程
1、拷贝四个 .c 和 .h 文件到自己的BSP文件夹
2、在cmakelist中定义include,source和define
# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
# Add user sources here
${CMAKE_SOURCE_DIR}/User/BSP/LCD/Src/lcd.c
${CMAKE_SOURCE_DIR}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c
${CMAKE_SOURCE_DIR}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c
)
# Add include paths
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined include paths
${CMAKE_SOURCE_DIR}/User/BSP/LCD/Inc
)
# Add project symbols (macros)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined symbols
HAL_SRAM_MODULE_ENABLED
)
其中 HAL_SRAM_MODULE_ENABLED是一定要定义的,而且在cubemx中生成的代码一定不要勾选只生成必要文件 ,不然 lcd.c 中就会缺少文件。
3、修改拷贝的四个文件
去除所有不必要的引用
1、lcd.c
去掉多余文件,这些函数我们在cubemx中已经定义了,引用main.h就能使用了
2、lcd_ex.c
在该文件中,除了需要去除多余include,还有重定义下delay_ms,不然也会编译报错:未定义函数。这里是简单封装成HAL_Delay();
void delay_ms(int32_t t){
HAL_Delay(t);
}
三、实验效果
笔者在F103ZET6和F407IGT6上都成功移植了。如果有报错,可以借助claude code解决。

浙公网安备 33010602011771号