当前位置: 首页 > news >正文

网站建设培训费用多少温州网站推广公司

网站建设培训费用多少,温州网站推广公司,网站建设这个职业是什么意思,抖音小程序怎么挂到抖音上目录 1.脉冲编码器设备基类2.脉冲编码器设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.脉冲编码器设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的pulse_encoder.h定义… 目录 1.脉冲编码器设备基类2.脉冲编码器设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.脉冲编码器设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的pulse_encoder.h定义了如下脉冲编码器设备基类 struct rt_pulse_encoder_device { struct rt_device parent; const struct rt_pulse_encoder_ops *ops; enum rt_pulse_encoder_type type; }; 脉冲编码器设备基类的方法定义如下 struct rt_pulse_encoder_ops { rt_err_t (*init)(struct rt_pulse_encoder_device *pulse_encoder); rt_int32_t (*get_count)(struct rt_pulse_encoder_device *pulse_encoder); rt_err_t (*clear_count)(struct rt_pulse_encoder_device *pulse_encoder); rt_err_t (*control)(struct rt_pulse_encoder_device *pulse_encoder, rt_uint32_t cmd, void *args); }; 抽象出来共性成为脉冲编码器设备基类的方法。 2.脉冲编码器设备基类的子类 各个脉冲编码设备基类的子类已经是在bsp的驱动层来实现了例如 / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_pulse_encoder.c定义的stm32脉冲编码器类这些都是可以实例化的终类。其他芯片厂家如此这般一样。 3.初始化/构造流程 以stm32为例从设备驱动层、设备驱动框架层到设备io管理层从下到上的构造/初始化流程如下 3.1设备驱动层 此层是bsp层可以实例化的终类地。 c文件: / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_pulse_encoder.c。 定义了stm32脉冲编码器类 struct stm32_pulse_encoder_device { struct rt_pulse_encoder_device pulse_encoder; TIM_HandleTypeDef tim_handler; IRQn_Type encoder_irqn; rt_int32_t over_under_flowcount; char *name; }; 实例化了stm32的脉冲编码器设备: static struct stm32_pulse_encoder_device stm32_pulse_encoder_obj[] ; 重写了脉冲编码器设备基类的方法: static const struct rt_pulse_encoder_ops _ops { .init pulse_encoder_init, .get_count pulse_encoder_get_count, .clear_count pulse_encoder_clear_count, .control pulse_encoder_control, }; hw_pulse_encoder_init中开启stm32脉冲编码器设备的初始化: 调用/ components / drivers / misc /pulse_encoder.c的rt_device_pulse_encoder_register函数来初始化脉冲编码器设备基类对象: stm32_pulse_encoder_obj[i].pulse_encoder.ops _ops; rt_device_pulse_encoder_register(stm32_pulse_encoder_obj[i].pulse_encoder, stm32_pulse_encoder_obj[i].name, RT_NULL) ; 注意重写了脉冲编码器设备基类的方法。 3.2 设备驱动框架层 / components / drivers / misc 下的pulse_encoder.c实现了设备驱动框架层接口rt_device_pulse_encoder_register它是脉冲编码器设备驱动框架层的入口开启脉宽编码器设备基类的构造流程。 它主要重写了脉冲编码设备基类的父类——设备基类——的方法: #ifdef RT_USING_DEVICE_OPS device-ops pulse_encoder_ops; #else device-init rt_pulse_encoder_init; device-open rt_pulse_encoder_open; device-close rt_pulse_encoder_close; device-read rt_pulse_encoder_read; device-write RT_NULL; device-control rt_pulse_encoder_control; #endif 并最终调用设备基类的初始化/构造函数rt_device_register。 3.3 设备io管理层 在/ components / drivers / core 下的device.c中实现了rt_device_register它是io管理层的入口。 它将stm32 脉冲编码器设备对象放到对象容器里管理。 4.总结 整个设备对象的构造/初始化流程其实是对具体设备对象也就是结构体进行初始化赋值——它这个结构体是包含一个个的结构体——模拟的是面向对象的继承机制。跟套娃似的层层进行初始化。这样的好处是什么每层有每层的初始化构造函数就模拟了面向对象的构造函数——按照先调用子类构造/初始化函数再调用父类的构造/初始化函数方式——其实也是子类构造/初始化函数调用父类构造/初始化函数的流程来完成设备对象的初始化/构造。最终放到对象容器里来管理。 这样的好处是可扩展如搭积木似的也是对内封闭对外开放扩展性好模拟的是面向对象的继承多态机制。 其实每个类的注册函数模拟的是面向对象的构造函数。 5.使用 文档
http://www.dnsts.com.cn/news/58583.html

相关文章:

  • 自己视频怎么上传网站wordpress 七牛云 ssl
  • 备案网站忘记密码重庆网站建设案例
  • 静海网站建设制作微信公众平台号申请注册
  • 个人网站页面模板html义乌企业网站建设
  • 手机网站qq登录插件广东网站开发项目
  • 做网站的叫什么新公司名称核准在哪个网站
  • 绍兴网站开发08keji苏州三石网络科技有限公司
  • 毕业设计做音乐网站可以吗怎么做学校子网站
  • php淘宝商城网站源码网站自己怎么做的
  • 网站的优化 优帮云织梦广告网站模板免费下载
  • 门户网站的好处wordpress设置注册观看
  • 网站开发工具环球建筑网校
  • 建立团购网站泰州手机网站制作
  • 辽宁省建设厅网站更新猫咪99永久找到回家的路
  • 南昌网站建设制作与维护攀枝花仁和住房和城乡建设局网站
  • 自己做的视频发什么网站吗平面设计专业哪个学校最好
  • 淄博网站建设费用甘肃网站建设选哪家
  • 做网站对电脑要求高吗建设档案员证书查询网站
  • 汶上做网站石家庄做网站的有哪些公司
  • 欣宝儿在什么网站做直播开发公司维保期内维修流程
  • 晋江住房和城乡建设局网站用html做网站的背景图怎么弄
  • 数码公司网站建设的意义网站开发需求分析与功能设计
  • 外贸网站建设哪家合适想做个网站怎么做
  • 购物网站建设的意义与目的滦平县建设局网站
  • a做片手机免费网站有哪些创意礼品私人定制
  • 天津做网站的公司有哪家网站视频主持人网
  • 西宁网站建设优化wordpress 微信主题下载
  • 江门网站优化经验网盟推广费
  • 重庆微信网站制作费用wordpress下载插件美化
  • 外贸做哪些网站平台好用深度liunx做网站