BSP层
参考代码:BSP_LED
Driver层
面向对象思想:
- 定义对象结构体:包括用
uint32_t定义的参数和许多的函数指针,并且还可以进一步的封装,定义一个结构体,里面放函数指针指向特定的函数,然后再在对象中定义一个指向结构体的指针 - 然后就是定义
inst函数(实例化),这个函数的作用是把对象中的函数指针,指向要用的底层函数,实现硬件无关 - 然后再写
driver_xxx_control函数,参数就一个指针,直接指向那个对象,然后通过函数指针直接调用操作函数就好 - 上面的所有函数,都要注意要先检查参数合法性,定义一个
XXX_DEBUG_MODE,可以dubug输出调用状态
Handler层
- 先定义对象结构体,要包括队列(creat,delete,put,get),互斥量(p,v),线程(create,delete),handler_xxx_control,OS_delay等等handler需要用的函数的结构体的指针
- 然后写inst,传参,连接指针
- 写register,把driver挂载到handler上进行统一管理,注意handler对象里会定义个driver_group专门储存driver实例,然后挂载的时候传index上去,就能记住driver的实例,如果有注册数量限制,还要有互斥量保护临界区driver_group
- 写handler_xxx_control,控制driver,用队列传输msg,然后一个线程监听队列,弹出msg,执行driver_xxx_control