最近在准备今年九月份的电子设计国赛,由于觉得按键太麻烦,所以干脆就利用原子提供的触摸屏底层驱动实现了触控按钮的管理,其基本功能如下:
1:支持按钮样式自定义,包括按钮颜 {MOD},渐变 {MOD},文字颜 {MOD},按下按钮的颜 {MOD}、渐变 {MOD}和字体颜 {MOD}等。
2:系统实现了对按钮的自动管理,首先申请按钮,Apply_Button(u16 x0 , u16 y0 , u16 x1 , u16 y1 , u16 color , char* text); 输入按钮的相关信息,若按钮没有与之前的按钮位置重合,则返回新申请的按钮id号,若申请不成功,返回0.当有按钮按下时,可以获取按下的按钮id,来判断是哪个按钮被按下。
3:按钮的扫描设置了两种模式,一种是中断模式,一种是查询模式。其中中断模式采用定时器每隔20ms进行一次扫描,当探测到有按钮按下时,将按钮id加入按钮id环形缓存区,主函数中只要判断缓存区是否为空,就可以来获取按下的按钮id值,这样提供了一种并行的管理机制。第二种是查询方式,通过调用函数Get_ButtonID()进入等待,直到有按钮被按下,返回按下按钮的id。
4:采用动态的内存管理,每申请一个按钮,会为该按钮开辟一个空间,并加入到双向链表的表尾,实现对按钮的管理。当要撤销按钮时,需要调用void Free_Button(u8 *id , u16 bkcolor);函数释放指定id的按钮,并以bkcolor {MOD}填充按钮区域,也可以调用Free_AllButton(u16 bkcolor);释放所有按钮。
最近有些人在问有没有战舰版的,我就试着移植了一下,由于手上没有战舰版的板子,只有一块类似的,在我的板子上调试是通过了,但没有在战舰版上调试,大家可以帮忙测试下,有什么问题告诉我,我再修改,希望对大家有帮助....
下面附上工程源代码:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
在启动代码里把堆的大小改大点就可以了...
---------------------------------
我知道你是谁了,现在玩啥片子的
回复【2楼】科科1987:
---------------------------------
我知道你是谁了,现在玩啥片子的
---------------------------------
我?STM32
一周热门 更多>