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

合肥微信网站制作宣讲家网站两学一做心得

合肥微信网站制作,宣讲家网站两学一做心得,广园路建设公司网站,中小企业网络搭建目录 1.adc设备基类2.adc设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.adc设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的adc.h定义了如下adc设备基类 struct rt_ad… 目录 1.adc设备基类2.adc设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.adc设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的adc.h定义了如下adc设备基类 struct rt_adc_device { struct rt_device parent; const struct rt_adc_ops *ops; }; adc设备基类的方法定义如下 struct rt_adc_ops { rt_err_t (*enabled)(struct rt_adc_device *device, rt_int8_t channel, rt_bool_t enabled); rt_err_t (*convert)(struct rt_adc_device *device, rt_int8_t channel, rt_uint32_t *value); rt_uint8_t (*get_resolution)(struct rt_adc_device *device); rt_int16_t (*get_vref) (struct rt_adc_device *device); }; 抽象出来adc设备的共性成为adc设备基类的方法。 共性:adc使能开关转换开关分辨率参考电压值。 2.adc设备基类的子类 各个看adc设备基类的子类已经是在bsp的驱动层来实现了例如 / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_adc.c定义的stm32 adc类这些都是可以实例化的终类。其他芯片厂家如此这般一样。 3.初始化/构造流程 以stm32为例从设备驱动层、设备驱动框架层到设备io管理层从下到上的构造/初始化流程如下 3.1设备驱动层 此层是bsp层可以实例化的终类地。 c文件: / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_adc.c。 定义了stm32的adc类 struct stm32_adc { ADC_HandleTypeDef ADC_Handler; struct rt_adc_device stm32_adc_device; }; 总感觉不舒服和rtt设备io框架类继承机制不一致应该改成这样 struct stm32_adc { struct rt_adc_device stm32_adc_device; ADC_HandleTypeDef ADC_Handler; }; 这就是舒服许多了。 实例化了stm32的adc设备: static struct stm32_adc stm32_adc_obj[sizeof(adc_config) / sizeof(adc_config[0])]; 重写了adc设备基类的方法: static const struct rt_adc_ops stm_adc_ops { .enabled stm32_adc_enabled, .convert stm32_adc_get_value, .get_resolution stm32_adc_get_resolution, .get_vref stm32_adc_get_vref, }; stm32_adc_init中开启stm32的adc设备的初始化: 调用/ components / drivers / misc /adc.c的rt_hw_adc_register函数来初始化adc设备基类对象: rt_hw_adc_register(stm32_adc_obj[i].stm32_adc_device, name_buf, stm_adc_ops, stm32_adc_obj[i].ADC_Handler) 注意把重写的adc设备基类方法传递进去了。 3.2 设备驱动框架层 rt_hw_adc_register是adc设备驱动框架层的入口开启adc设备基类的构造/初始化流程。 其主要是重写设备基类对象的方法如下 / components / drivers / misc 下的adc.c实现了设备驱动框架层接口。 重写adc设备基类的父类设备基类的方法如下 #ifdef RT_USING_DEVICE_OPS device-parent.ops adc_ops; #else device-parent.init RT_NULL; device-parent.open RT_NULL; device-parent.close RT_NULL; device-parent.read _adc_read; device-parent.write RT_NULL; device-parent.control _adc_control; #endif 同时重写adc设备基类的方法。 device-ops ops; 并最终调用设备基类的初始化/构造函数rt_device_register。 3.3 设备io管理层 rt_device_register是io管理层的入口。从框架章节可以知道所有设备类都继承自设备基类rt_device自然都要实现设备基类rt_device的约束方法上面已经重写。 在/ components / drivers / core 下的device.c中实现了rt_device_register由它将pin设备放到容器里管理。 4.总结 整个设备对象的构造/初始化流程其实是对具体设备对象也就是结构体进行初始化赋值按照先调用子类构造/初始化函数再调用父类的构造/初始化函数方式——其实也是子类构造/初始化函数调用父类构造/初始化函数的流程来完成设备对象的初始化/构造。最终放到对象容器里来管理。 5.使用 文档
http://www.pierceye.com/news/1516/

相关文章:

  • 建网站与发布网站广州网站快速制作
  • 医疗网站建设新闻凡科建站免费版可以做什么
  • 建设网站需要营业执照福州搜索优化实力
  • 微网站介绍自动app优化官网
  • 免费行情软件app网站大全下载安装网易企业邮箱账号
  • 网站后台和移动开发wordpress 虎嗅
  • 旅游网站的设计与建设网站建设费用什么意思
  • 坑梓网站建设信息用asp.net做的购物网站
  • c网站开发案例详解可以做装修效果图的网站有哪些
  • 网站建设原因邯郸网站建设的地方
  • 电子商务网站建设课设网站河南便宜网站建设
  • 娄底市网站建设湖南城乡建设部网站首页
  • 莱芜市网站建设设计导购网站开发 源码
  • 无锡商城网站建设提高网站转化率
  • 自己做网站优化微信朋友圈怎么发链接那种网页怎么制作
  • 自己做盗版影视网站网络开发定制
  • 高端企业网站制作网站建设市场拓展岗位
  • 电子商务网站的分类wordpress redis 刷新
  • 站长工具seo综合查询怎么看数据哪个网站可以做免费推广
  • 怎么做刷题网站无锡做网站哪里好
  • 南京高新区规划建设局网站网站用什么图片格式好
  • 徐州网站建设系统深圳租赁住房和建设局网站
  • 购物网站两化融合建设项目报告永久免费自助网站
  • 建设一个网站平台需要哪些技术员一个企业该如何进行网络营销
  • 开封市住房和城乡建设局网站潍坊做网站的网络公司
  • 网站 后台 安装做视频网站服务器多少钱
  • 江西省建设监理网站湖南建立网站营销设计
  • 个人简历模板免费网站网站域名如何更换
  • 济南做网站的高端品牌wordpress需要登录
  • 小型网站如何做网站开发一般用