单片机低RAM、少按键情况下的简易OLED链表菜单

最近使用的单片机硬件资源及其匮乏,RAM只有512B,按键只有2个(其中一个还是将reset按键复用为NMI中断得到的)。在这种情况下,若是因为菜单而浪费大量RAM是非常心痛的。

设计了一个非常简易的通用链表菜单,用于在OLED屏上显示,具体示例如下。

typedef struct Menu
{
    uint8_t Name[15];
    void (*Function)();
    const struct Menu* next;
    const struct Menu* parent;
    const struct Menu* child;
}MENU;

const MENU* nowP = &Menu[0];//指针nowP用于遍历菜单

const MENU Menu[8] =
{
 {"Set location",   *Menu_Enter,     &Menu[5],  NULL,     &Menu[1]},    //0
     {"Setx"   ,    *Set_location,   &Menu[2],  &Menu[0], NULL},        //1
     {"Sety"   ,    *Set_location,   &Menu[3],  &Menu[0], NULL},        //2
     {"Run"   ,     *Run,            &Menu[4],  &Menu[0], NULL},        //3
     {"<<<"   ,     *Menu_Return,    &Menu[1],  &Menu[0], NULL},        //4
 {"Circular",       *CircularMotion, &Menu[6],  NU
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值