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

无锡做网站公司有哪些一定要用c 做网站吗

无锡做网站公司有哪些,一定要用c 做网站吗,网站开发与维护,网站推广智选刺盾云下拉目录 1.uart设备基类2.uart设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.uart设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的serial.h定义了如下uart设备基类 struc… 目录 1.uart设备基类2.uart设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.uart设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的serial.h定义了如下uart设备基类 struct rt_serial_device { struct rt_device parent; const struct rt_uart_ops *ops; struct serial_configure config; void *serial_rx; void *serial_tx; struct rt_spinlock spinlock; struct rt_device_notify rx_notify; }; uart设备基类继承自设备基类剩下都是私有属性和私有方法。 uart设备基类的方法定义如下 struct rt_uart_ops { rt_err_t (*configure)(struct rt_serial_device *serial, struct serial_configure *cfg); rt_err_t (*control)(struct rt_serial_device *serial, int cmd, void *arg); int (*putc)(struct rt_serial_device *serial, char c); int (*getc)(struct rt_serial_device *serial); rt_ssize_t (*dma_transmit)(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction); }; 抽象出了串口的共性配置、发送、接受、dma传输成为uart设备基类的方法。 2.uart设备基类的子类 此层是设备驱动层此类是实现类。各个uart设备基类的子类在各个bsp来实现例如 / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_usart.h定义的stm32_uart 类这是可以实例化的实现类。其他芯片厂家如此这般一样。 3.初始化/构造流程 以stm32为例从设备驱动层、设备驱动框架层到设备io管理层从下到上的构造/初始化流程如下 3.1设备驱动层 此层是bsp层可以实例化的终类地。 c文件: / bsp / stm32 / libraries / HAL_Drivers / drivers 下的drv_usart.h。 定义了stm32的uart类 struct stm32_uart { UART_HandleTypeDef handle; struct stm32_uart_config *config; rt_uint32_t DR_mask; #ifdef RT_SERIAL_USING_DMA struct { DMA_HandleTypeDef handle; rt_size_t remaining_cnt; } dma_rx; struct { DMA_HandleTypeDef handle; } dma_tx; #endif rt_uint16_t uart_dma_flag; struct rt_serial_device serial; }; stm32的uart设备类继承自uart设备基类serial但是这样定义的类把父类写到最后——和rtt设备io框架不一致改成这样多好: struct stm32_uart { struct rt_serial_device serial; UART_HandleTypeDef handle; struct stm32_uart_config *config; rt_uint32_t DR_mask; #ifdef RT_SERIAL_USING_DMA struct { DMA_HandleTypeDef handle; rt_size_t remaining_cnt; } dma_rx; struct { DMA_HandleTypeDef handle; } dma_tx; #endif rt_uint16_t uart_dma_flag; }; 这样舒服多了。 在/ bsp/stm32/libraries /HAL_Drivers/drivers/drv_usart.c中: 实例化了stm32的uart设备: static struct stm32_uart uart_obj[sizeof(uart_config) / sizeof(uart_config[0])] {0}; stm32支持多个串口所以可以实例化多个stm32串口设备对象。 重写了uart设备基类的方法: static const struct rt_uart_ops stm32_uart_ops { .configure stm32_configure, .control stm32_control, .putc stm32_putc, .getc stm32_getc, .dma_transmit stm32_dma_transmit }; int rt_hw_usart_init中开启stm32的uart设备的初始化: 重写uart设备基类的方法与属性 uart_obj[i].config uart_config[i]; uart_obj[i].serial.ops stm32_uart_ops; uart_obj[i].serial.config config; 最后调用/ components / drivers /serial /serial.c的rt_device_pwm_register函数来初始化uart设备基类对象: rt_hw_serial_register(uart_obj[i].serial, uart_obj[i].config-name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | uart_obj[i].uart_dma_flag , NULL); 3.2 设备驱动框架层 / components / drivers /serial 下的serial.c实现了设备驱动框架层接口rt_hw_serial_register是uart设备驱动框架层的入口开启uart设备基类的构造/初始化流程。 该层重写了uart设备基类的父类——设备基类——的方法: #ifdef RT_USING_DEVICE_OPS device-ops serial_ops; #else device-init rt_serial_init; device-open rt_serial_open; device-close rt_serial_close; device-read rt_serial_read; device-write rt_serial_write; device-control rt_serial_control; #endif 并最终调用设备基类的构造函rt_device_register。 3.3 设备io管理层 在/ components / drivers / core 下的device.c中实现了rt_device_register它是io管理层的入口。 它将stm32 uart设备对象放到对象容器里管理。 4.总结 整个设备对象的构造/初始化流程其实是对具体设备对象也就是结构体进行初始化赋值——它这个结构体是包含一个个的结构体——模拟的是面向对象的继承机制。跟套娃似的层层进行初始化。这样的好处是什么每层有每层的初始化构造函数就模拟了面向对象的构造函数——按照先调用子类构造/初始化函数再调用父类的构造/初始化函数方式——其实也是子类构造/初始化函数调用父类构造/初始化函数的流程来完成设备对象的初始化/构造。最终放到对象容器里来管理。 这样的好处是可扩展如搭积木似的也是对内封闭对外开放扩展性好模拟的是面向对象的继承多态机制。 其实每个类的注册函数模拟的是面向对象的构造函数。 5.使用 文档
http://www.w-s-a.com/news/508107/

相关文章:

  • 自媒体网站程序淘宝网站维护
  • 凡科网站建设网站wordpress 七牛oss
  • 搬瓦工的主机可以用来做网站吗分类信息网站开发需求方案
  • 上海高端网站开发站霸网络国际网站建设的目的
  • 程序员招聘求职的网站做网站加入广告联盟
  • 网站建设的技术方案模板易做文学网站的logo
  • 建设国家标准官方网站响应式网站切图
  • 网站链接数怎么做wordpress安装网址
  • 沈阳建网站 哪家好如何做旅游网站推销
  • 继续网站建设南通网站建设方法
  • 淮南公司网站建设如果做京东优惠卷的网站
  • 二手房网站平台怎么做项目工程监理公司网站建设方案
  • 秦皇岛做网站公司小说推广平台有哪些
  • php网站做分享到朋友圈天元建设集团有限公司信用代码
  • 邱县做网站在线免费图片编辑器
  • 网站备份网站做网站如何把支付宝微信吧
  • 做网站的怎么获取客户信息晋城建设局网站
  • 新开传奇网站发布网单职业wordpress建站网页无法运作
  • 海南省住房和城乡建设厅官方网站网站开发有哪些语言
  • 网站开发排期表免费网站建设策划
  • 飞沐网站设计江苏建设人才网证书查询
  • 网站优化的意义怎么帮商家推广赚钱
  • 安顺公司做网站福州建设发展集团有限公司网站
  • 普陀企业网站建设做散客机票的网站如何推广
  • 河北网站建设与制作建设宁波市分行的互联网网站
  • python做网站是不是特别慢百度推广基木鱼
  • 卖网站链接东营住房和城乡建设信息网
  • 网站后台如何上传ico图标单位建设网站需要的材料
  • 如何建淘客网站郑州做网站最好的公司
  • 连锁酒店网站方案o2o网站建设方案