BSP层

← 嵌软高手知识地图

参考代码:BSP_LED


Driver层

面向对象思想:

  1. 定义对象结构体:包括用uint32_t定义的参数和许多的函数指针,并且还可以进一步的封装,定义一个结构体,里面放函数指针指向特定的函数,然后再在对象中定义一个指向结构体的指针
  2. 然后就是定义inst函数(实例化),这个函数的作用是把对象中的函数指针,指向要用的底层函数,实现硬件无关
  3. 然后再写driver_xxx_control函数,参数就一个指针,直接指向那个对象,然后通过函数指针直接调用操作函数就好
  4. 上面的所有函数,都要注意要先检查参数合法性,定义一个XXX_DEBUG_MODE,可以dubug输出调用状态

Handler层

  1. 先定义对象结构体,要包括队列(creat,delete,put,get),互斥量(p,v),线程(create,delete),handler_xxx_control,OS_delay等等handler需要用的函数的结构体的指针
  2. 然后写inst,传参,连接指针
  3. 写register,把driver挂载到handler上进行统一管理,注意handler对象里会定义个driver_group专门储存driver实例,然后挂载的时候传index上去,就能记住driver的实例,如果有注册数量限制,还要有互斥量保护临界区driver_group
  4. 写handler_xxx_control,控制driver,用队列传输msg,然后一个线程监听队列,弹出msg,执行driver_xxx_control