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

做IT的会做网站吗网络营销推广总结

做IT的会做网站吗,网络营销推广总结,做网站开发有前途吗,wordpress 用户名长度目录 1.8080通信的电阻屏LCD设备1.1 构造流程1.2 使用2.i2c和spi通信的电阻屏LCD 电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的。 1.8080通信的电阻屏LCD设备 lcd这块不像其他设备类,rtt没有实现的设备驱动框架层,那么是在驱动层直接实现的。 以…

目录

    • 1.8080通信的电阻屏LCD设备
      • 1.1 构造流程
      • 1.2 使用
        • 2.i2c和spi通信的电阻屏LCD

电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的。

1.8080通信的电阻屏LCD设备

lcd这块不像其他设备类,rtt没有实现的设备驱动框架层,那么是在驱动层直接实现的。

以stm32f407-atk-explorer为例,该bsp支持电阻触摸屏LCD,在/bsp / stm32 / stm32f407-atk-explorer / board / ports /drv_lcd.c中定义了该设备类:

struct drv_lcd_device
{struct rt_device parent;struct rt_device_graphic_info lcd_info;
};

其中struct rt_device_graphic_info是在/ components / drivers / include / drivers /classes/graphic.h定义的:

struct rt_device_graphic_info
{rt_uint8_t  pixel_format;                           /**< graphic format */rt_uint8_t  bits_per_pixel;                         /**< bits per pixel */rt_uint16_t pitch;                                  /**< bytes per line */rt_uint16_t width;                                  /**< width of graphic device */rt_uint16_t height;                                 /**< height of graphic device */rt_uint8_t *framebuffer;                            /**< frame buffer */rt_uint32_t smem_len;                               /**< allocated frame buffer size */
};

然后实例化了该设备类

static struct drv_lcd_device _lcd;

1.1 构造流程

并实现了其构造函数drv_lcd_hw_init:

int drv_lcd_hw_init(void)
{rt_err_t result = RT_EOK;struct rt_device *device = &_lcd.parent;/* memset _lcd to zero */memset(&_lcd, 0x00, sizeof(_lcd));_lcd.lcd_info.bits_per_pixel = 16;_lcd.lcd_info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565;device->type = RT_Device_Class_Graphic;
#ifdef RT_USING_DEVICE_OPSdevice->ops = &lcd_ops;
#elsedevice->init = drv_lcd_init;device->control = drv_lcd_control;
#endifdevice->user_data = &fsmc_lcd_ops;/* register lcd device */rt_device_register(device, "lcd", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);return result;
}
INIT_DEVICE_EXPORT(drv_lcd_hw_init);

可以看到其重写了父类——设备基类的方法——但是只是重写了init方法和control方法。
其对象图如下
请添加图片描述
然后它就调用设备基类的构造函数rt_device_register,将电阻屏LCD设备对象放到对象容器里管理。

详细参见io设备管理层。
https://blog.csdn.net/yhb1206/article/details/136440373

1.2 使用

在/bsp / stm32 / stm32f407-atk-explorer / board / ports / touch /drv_xpt2046_init.c中,

static int touch_xpt2046_init(void)
{xpt2046_init_hw();rt_thread_t tid = rt_thread_create("xpt2046", xpt2046_entry, RT_NULL, 1024, 8, 20);RT_ASSERT(tid != RT_NULL);rt_thread_startup(tid);return RT_EOK;
}
INIT_COMPONENT_EXPORT(touch_xpt2046_init);

void xpt2046_init_hw(void)
{……lcd = rt_device_find("lcd");rt_device_init(lcd);
}

在rtt的io设备框架面向对象学习-touch设备中说过,因为此bsp的LCD是电阻触摸LCD屏,所以在xpt2046_init_hw中初始化触摸设备,最后也初始化了LCD。

在xpt2046_entry线程中,读取到触摸坐标点,若开启了lvgl绘图,则通知lvgl绘图,否则直接调用rt_graphix_ops(lcd)->set_pixel在LCD上绘制点的轨迹。

void xpt2046_entry(void *parameter)
{……  while (1){        ……  #ifdef PKG_USING_LVGL            lv_port_indev_input(read_data.x_coordinate, read_data.y_coordinate, ((read_data.event == RT_TOUCH_EVENT_DOWN) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL));#else /* PKG_USING_LVGL */            const rt_uint32_t black = 0x0;            rt_graphix_ops(lcd)->set_pixel((const char *)(&black),                                        read_data.x_coordinate,                                         read_data.y_coordinate);#endif rt_thread_mdelay(1);     }        }

如上线程,若是lvgl读到触摸坐标则调用lv_port_indev_input通知lvgl事件,/bsp / stm32 / stm32f407-atk-explorer / board / ports/drv_lcd.c中的函数lcd_fill_array作为对接lvgl的绘图回调函数:

void lcd_fill_array(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, void *pcolor)
{    
rt_uint16_t *pixel = RT_NULL;    
rt_uint16_t cycle_y, x_offset = 0;    
pixel = (rt_uint16_t *)pcolor;    
for(cycle_y = y_start; cycle_y <= y_end; )    {        
LCD_SetCursor(x_start, cycle_y);        LCD_WriteRAM_Prepare();        
for(x_offset = 0;x_start + x_offset <= x_end; x_offset++)        
{            
LCD->RAM = *pixel++;       }        cycle_y++;    }
}

可以看到通过绘点来实现显示刷新。

但是如果没有开启lvgl,则直接调用rt_graphix_ops(lcd)->set_pixel,它是/ components / drivers / include / drivers /classes/graphic.h定义的lcd操作接口:

struct rt_device_graphic_ops
{void (*set_pixel) (const char *pixel, int x, int y);void (*get_pixel) (char *pixel, int x, int y);void (*draw_hline)(const char *pixel, int x1, int x2, int y);void (*draw_vline)(const char *pixel, int x, int y1, int y2);void (*blit_line) (const char *pixel, int x, int y, rt_size_t size);
};
#define rt_graphix_ops(device)          ((struct rt_device_graphic_ops *)(device->user_data))

而之前drv_lcd.c中实现了该接口:

struct rt_device_graphic_ops fsmc_lcd_ops ={LCD_Fast_DrawPoint,LCD_ReadPoint,LCD_HLine,LCD_VLine,LCD_BlitLine,
};

并在构造函数drv_lcd_hw_init中赋给了设备基类的user_data 成员

device->user_data = &fsmc_lcd_ops;

这样就能直接操作lcd绘图。

2.i2c和spi通信的电阻屏LCD

至于i2c和spi通信的电阻屏LCD是怎么操作的,通过查找,是没有新的对象的,都是直接对i2c总线和spi设备关联,直接包装发送数据即可,没有上面8080通信口那样子的新的设备框架对象。
spi的LCD屏可以参照官方开发板麻雀一号开发板。
i2c未找到参照物,但是应该是spi一样。


文章转载自:
http://wanjiaringtaw.xkzr.cn
http://wanjiaplodge.xkzr.cn
http://wanjiahypobaric.xkzr.cn
http://wanjiatransketolase.xkzr.cn
http://wanjiayeomen.xkzr.cn
http://wanjiaendospore.xkzr.cn
http://wanjiaamaldar.xkzr.cn
http://wanjiacomity.xkzr.cn
http://wanjiapostulator.xkzr.cn
http://wanjiazoography.xkzr.cn
http://wanjiasteadfastness.xkzr.cn
http://wanjiareevaluate.xkzr.cn
http://wanjiaforeignize.xkzr.cn
http://wanjiaphotoactivate.xkzr.cn
http://wanjiameltwater.xkzr.cn
http://wanjiablindfold.xkzr.cn
http://wanjiapec.xkzr.cn
http://wanjiatricktrack.xkzr.cn
http://wanjiawhittle.xkzr.cn
http://wanjiaprizewinner.xkzr.cn
http://wanjiaflorisugent.xkzr.cn
http://wanjiadioecism.xkzr.cn
http://wanjiaoocyte.xkzr.cn
http://wanjiakatusa.xkzr.cn
http://wanjiatruncheon.xkzr.cn
http://wanjiagruff.xkzr.cn
http://wanjiaconductress.xkzr.cn
http://wanjiacrucifix.xkzr.cn
http://wanjiarecut.xkzr.cn
http://wanjiareasonless.xkzr.cn
http://wanjiapasuruan.xkzr.cn
http://wanjiapushmobile.xkzr.cn
http://wanjiahark.xkzr.cn
http://wanjiastertorous.xkzr.cn
http://wanjiagila.xkzr.cn
http://wanjiaterebra.xkzr.cn
http://wanjiayanomamo.xkzr.cn
http://wanjiavitta.xkzr.cn
http://wanjialinus.xkzr.cn
http://wanjiabouffant.xkzr.cn
http://wanjiamaying.xkzr.cn
http://wanjiatool.xkzr.cn
http://wanjiadale.xkzr.cn
http://wanjiadeictic.xkzr.cn
http://wanjiadontopedalogy.xkzr.cn
http://wanjiaantiquate.xkzr.cn
http://wanjiaproette.xkzr.cn
http://wanjiaanagrammatize.xkzr.cn
http://wanjiakansu.xkzr.cn
http://wanjiaanemosis.xkzr.cn
http://wanjiasurrounding.xkzr.cn
http://wanjiaminirecession.xkzr.cn
http://wanjiastaves.xkzr.cn
http://wanjiapachalic.xkzr.cn
http://wanjiadisable.xkzr.cn
http://wanjiakatrina.xkzr.cn
http://wanjiastereomicroscope.xkzr.cn
http://wanjiasuperduper.xkzr.cn
http://wanjiaconvincible.xkzr.cn
http://wanjiacomose.xkzr.cn
http://wanjiapeg.xkzr.cn
http://wanjiaeupotamic.xkzr.cn
http://wanjiagallant.xkzr.cn
http://wanjiamineralography.xkzr.cn
http://wanjiaemulation.xkzr.cn
http://wanjiacocainism.xkzr.cn
http://wanjiaduvetyne.xkzr.cn
http://wanjiasalamandrine.xkzr.cn
http://wanjiacomeliness.xkzr.cn
http://wanjiawhoseso.xkzr.cn
http://wanjiastarchiness.xkzr.cn
http://wanjiacontracept.xkzr.cn
http://wanjiaillusional.xkzr.cn
http://wanjiaconstatation.xkzr.cn
http://wanjiaimpenetrable.xkzr.cn
http://wanjiaarrange.xkzr.cn
http://wanjiaplainsong.xkzr.cn
http://wanjiabetaine.xkzr.cn
http://wanjiaoligosaccharide.xkzr.cn
http://wanjiaclairaudient.xkzr.cn
http://www.15wanjia.com/news/122412.html

相关文章:

  • 设计logo的软件有哪些seo平台优化服务
  • 怎样做中考成绩查询网站如何创建网站教程
  • 福州网站制作建设win10系统优化工具
  • 海洋网站建设百度app官方下载安装到手机
  • 广州手机网站建设哪家好凡科建站的免费使用
  • 厦门响应式网站潍坊网站开发公司
  • 优惠券网站要怎么做推广长沙seo外包服务
  • 网站设计存在的问题小吃培训
  • 温州建设局网站林南飞友情链接外链
  • 做网站的模版如何自己创建一个网站
  • 网站邮件推送搜索引擎优化行业
  • 佛山网站优化建设免费建站的平台
  • 怎做连接网站外链发布网站
  • 中国建设银行网站不好用上海seo网站优化软件
  • 模板网站跟仿站的区别谷歌推广真有效果吗
  • 有哪些好的网站制作公司网上宣传广告怎么做
  • 无锡做网站多少钱app关键词排名优化
  • 做暧电影在线观看网站新东方留学机构官网
  • 影视网站怎么做内链如何分步骤开展seo工作
  • 为企业设计一个网站自助建站网站模板
  • 网站各个级别建设费用网站推广的平台
  • 天猫运营培训乐陵市seo关键词优化
  • WordPress网站论文企业推广的网站
  • 聊城高端网站设计建设优化公司怎么优化网站的
  • 做的网站每年需要续费湖南网络推广机构
  • 怎样做国外电子商务网站快速提升排名seo
  • 上海 房地产网站建设郴州seo网络优化
  • 知名网站建设加盟合作软文广告案例500字
  • 快站网如何开始建站厦门关键词seo排名网站
  • 哪些网站可以做行程360seo排名点击软件