项目名称 DSP2
基于STM32F407VE的一个桌面课程表的项目,啊也不算项目就是自己玩一玩
硬件设计
1) STM32F407VE 最小系统 2) GXHT30 温度采集 3) DS3231 RTC时间读取 4) AT24C02 EEPROM扩展 5) W25Q16 FLASH扩展 6) 板载ESP8266 7) 系统供电电压采集 8) 八位LCD屏幕 9) 板载无源蜂鸣器 10) 板载两路CAN接口 11) 板载SD卡卡槽 硬件项目如果想要的人多的话我会将工程文件上传到网盘,放在第二期的LVGL的学习笔记中
各部分硬件的软件驱动也写的差不多了,把LittleVGL学完之后就可以开始捋系统的逻辑了
本来LCD屏幕准备自己写UI的开始写了一会之后发现自己写的实在是太丑了,况且每个部件都得自己写一个函数,最后就想着用LittleVGL来实现DSP2的界面UI设计,这也就是学习LittleVGL的缘由 在移植LVGL的过程中发现自己的LCD是八位的导致肉眼还是可以看出来屏幕的刷新速度,虽然加了FSMC,所以就有了新的设计方案,在这备注以便后期设计参考
新的设计方案
1)加入SRAM将一部分内存分配到SRAM 2)换屏幕为16位接口加快刷新速度 3)加入I2S音频解码电路(不一定加入,感觉有用又没有用···) 4)由于32的高速时钟32本身就发热 虽然加入了两个1117一个用于STM32与LCD的供电一个用于ESP8266的供电但是1117本身就是一个LDO线性降压芯片所以不可避免的发出热量,然后还有ESP8266的无线通信导致ESP8266也散发出热量,所以拟在系统中加入一个可调速的小风扇,通过一个MOS加PWM实现风扇调速效果(不一定加因为这个热量好像不会影响系统的正常工作,因为后期项目PCB定型之后会通过光固化设计一个外壳,如果不加风扇,导致热量不能散发出去,影响系统正常工作也影响用户体验)
LittleVGL学习笔记(1)
以下是LittleVGL的学习笔记,前几节是记的手写笔记所以就不上传了(前几节主要讲的是LVGL的移植与PC端模拟器的使用,还有一个LVGL自带任务线程的API接口都可以看视频移植啥的,在这我就主要写一下LVGL的对象接口以便于以后查阅,如果代码或笔记有什么不妥之处,烦请私信告诉我) 这个代码是基于正点原子的官方视频边讲边学的,不得不说正点原子YYDS 先是此LittleVGL演示的样式结构图
#include "DSP2.h"
lv_obj_t* Screen1;
lv_obj_t* LVbutton1;
lv_obj_t* LVobj1;
lv_obj_t* LVobj2;
lv_obj_t* LVobj3;
lv_style_t Child1Style;
lv_obj_t* Child1;
void test_start(){
Screen1 = lv_scr_act();
LVobj1 = lv_obj_create(Screen1,NULL);
lv_obj_set_pos(LVobj1,50,50);
lv_obj_set_click(LVobj1,true);
lv_obj_set_event_cb(LVobj1,LVobj1Click_Callback);
LVobj2 = lv_obj_create(Screen1,LVobj1);
lv_obj_set_style(LVobj2,&Child1Style);
lv_obj_set_pos(LVobj2,100,100);
LVobj3 = lv_obj_create(Screen1,LVobj1);
lv_obj_set_style(LVobj3,&Child1Style);
lv_obj_set_size(LVobj3,30,30);
lv_obj_align(LVobj3,LVobj2,LV_ALIGN_OUT_BOTTOM_MID,0,10);
LVbutton1 = lv_btn_create(Screen1,NULL);
lv_obj_set_pos(LVbutton1,200,50);
lv_obj_set_event_cb(LVbutton1,LVbutton1_Callback);
Child1 = lv_obj_create(LVobj1,NULL);
lv_obj_set_size(Child1,20,20);
lv_obj_set_pos(Child1,10,10);
lv_style_copy(&Child1Style,&lv_style_plain_color);
Child1Style.body.main_color = LV_COLOR_RED;
Child1Style.body.grad_color = LV_COLOR_YELLOW;
lv_obj_set_style(Child1,&Child1Style);
}
void LVbutton1_Callback(lv_obj_t* obj,lv_event_t event){
if(obj == LVbutton1){
if(event == LV_EVENT_RELEASED){
lv_obj_set_hidden(LVobj2,true);
}
}
}
void LVobj1Click_Callback(lv_obj_t* obj,lv_event_t event){
if(obj == LVobj1){
if(event == LV_EVENT_RELEASED){
lv_obj_set_pos(LVobj1,150,150);
}
}
}
|