QPN框架的学习
QPN是Quantum Leaps一个针对于嵌入式芯片开发的一个开源的轻量级Active Object (Actor) Frameworks框架,用于替代常规嵌入式开发中的Superloop,在常规的嵌入式学习中,大部分人是从学生时代开始接触的,在学习的过程中,一般不太注重代码的结构,可移植性和可读性,在前期的过程中这并不影响学习的整个流程,特别是在学校中的各种比赛或者是制作中并不太注重,但在工作中的话,这个就有很大的短板。
在嵌入式程序的设计中,实时性是非常重要的,举例说明:在一个嵌入式场合有以下的需求,一个四位数码管,三个按键,因成本需要,不能使用数码和按键驱动芯片,只允许使用一颗单片机来执行驱动。需求非常简单,但是常规的驱动会对按键进行延时消抖,如果有多级菜单的话,延时使用将更加多,但是数码管需要一直扫描,如果使用普通的结构进行驱动的话,在按键被按下时数码管将出现闪烁或者停止显示等现象。为了解决这个问题一般会使用状态机框架来设计程序。熟练掌握状态机是每个嵌入式程序员的必修课。状态机需要绘制状态图,然后根据状态图来写代码。Quantum Leaps为了减轻嵌入式程序员的设计负担,并增加程序的灵活性设计了QPC,QPCPP,QPN,等状态机框架,配合QM状态图绘制工具可以生成一个符合嵌入式需要的代码。
int main(void)
{
HAL_Init();
MX_GPIO_Init();
MX_FSMC_Init();
Blinky_Ctor();
QF_init(Q_DIM(QF_active));
return QF_run();
}
主函数的代码非常清晰,这不但有利于管理代码的结构,也有利于修改程序的整体流程,大提高了程序可重用性,并且在日后重新查看代码的时候,可以根据状态图来查看代码的结构,代码易读性大大提高。