
【前言】 官网中讲到了这个MCU是支持TouchGFX图形界面开发的。但是他只有30K的内存,因此对于彩色TFT来是说是比较紧张的,我考虑了一下128160的分辨率的屏需要占用128 160 2 就需要40K的内存,因此先用OLED来移植,因此oled只需要占用1K的显存就行了。 【移植前提】 1、需要下载好touchGFX desiger。 2、stm32cubeMX需要下载好coube-touchgfx插件。 【移植步骤】 1、开发原理图的i2c1为CN5的D15、D14为PB9、PB8。因此打开stm32cubeMX配置好OLED使用的IIC,使用400KHz模式: 2、生成工程后,移植开源的ssd1306的驱动,下载网址为:afiskon/stm32-ssd1306: STM32 library for working with OLEDs based on SSD1306, SH1106, SH1107 and SSD1309, supports I2C and SPI 3、下载后,把源码复制到工程的Drivers\BSP目录下面,并把源码添加到工程中,把ssd1306_conf_template.h重命名为ssd1306_conf.h。同时把stm32C0的宏打开。 3、添加好工程后如下面所示: 4、在main.c中添加ssd1306与ssd1306_test的头文件。添加测试代码: 5、下载程序后,OLED屏应该显示正确的LOGO 到此OLED屏的驱动完成,接下来移植TouchGFX 6、在stm32cubeMX中打开CRC,并打开TIM17,为TouchGFX提供心跳包。 配置这样后,为20Hz产生屏幕刷新一次。 7、接下来打touchgfx,配置为单色屏幕,像素为128*64 这样就可以生成工程了。 8、在生成工程后,在TouchGFX目录下打开工程
然后生成工程,在mdk中打开工程,按下面的步骤添加代码。 10、在TouchGFXHAL.cpp中添加代码如下,意在引用C的头文件,即SSD1306的驱动文件,同时引用OSwrappers.hpp
11、在刷新函数中添加自定的代码:
12、在最低部添加同步刷新函数,以C接口注明可以在定时器中断中调用:
13、编写定时器中断,添加周期调用:
14、在main.c中注释掉ssd测试的函数,同时添加启动定时器的代码: 下载后就可以看到实际的效果了: 【总结】 在这么小资源的芯片上实现touchGFX,方便图形界面开发,用户自己需要实现的代码量也比较少,使用起来还是比较方便的。如果有大尽尺寸的单色屏幕,UI实现的效果是非常好的! |
【STM32C0评测】驱动ST7735LCD屏
【STM32C0评测】移植nr_micro_shell
【STM32C0评测】使用外部中断控制小灯点亮熄灭
【STM32C0评测】开箱以及环境搭建
【板卡申请】入门 “芯”篇章, 速写新品STM32C071/92申请计划
2024年STM32巡回研讨会--北京
STM32不止于芯-广州巡回研讨会分享
【NUCLEO-C031C6】初始化 FOC
话题风暴:看看新品STM32C0到底怎么个事儿?
【NUCLEO-C031C6】串口输出printf测试
真不错
不错,可以试试3.5寸的那个屏幕