以前我一直觉得只有做纯软件的程序员才需要注意程序框架的设计,上了韦东山老师的课之后才觉得做单片机的程序开发注意框架设计也是很必要的事情。要在单片机开发的过程中引入面向对象的思想,这样的代码更容易扩展,可读性更强,将硬件层和应用层分开,降低了代码的耦合性。
以按键点灯程序为例:
void main(void)
{
GPIO_PinState key;
while (1)
{
key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_6);
if (key == GPIO_PIN_RESET)
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_5, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_5, GPIO_PIN_SET);
}
}
常规的轮询方法就是如上所示,想要读懂这段代码就要有硬件知识、需要有HAL库知识,才能理解这个程序。无法扩展且代码无法复用。
所以要设计良好的程序框架,做到高内聚低耦合,对程序进行分层设计:将程序分为驱动层、中间层以及应用层。结构如下:
1.驱动层:对硬件进行调用以及封装,对每个按键以及led灯进行封装,实现需要的函数如对按键进行初始化(init_key)以及读取按键的值(read_key),同时为了将每个按键都区分开,采用结构体实现每个按键的函数,通过函数指针的方式,将每个按键都封装在一个结构体内&
百问网七天物联网课程学习笔记——程序框架设计
于 2022-05-02 15:10:56 首次发布