样式
样式 样式是一个 lv_style_t 变量,它可以保存边框宽度、文本颜色等对象的属性尽管可以用简单的方法Lv_set_xxx()直接修改对象的属性,但是用过样式来该的话可以比较方便的修改更多对象的样式。 可以将样式分配给对象以更改其外观。在赋值过程中,可以指定目标部分(和目标状态 LVGL对象包括如下状态且可以通过|来组合 数字代表了这种状态的优先级,最后选择优先级最高的来显示 1.初始化样式和设置/获取属性样式存储在 lv_style_t 变量中。样式变量应该是 static 、全局或动态分配的。 换句话说,它们不能是函数中的局部变量,当函数结束时它们会被销毁。 在使用样式之前,它应该用 lv_style_init(&my_style) 进行初始化。 初始化后,可以设置或添加样式属性。lv_style_set_<property_name>(&style, <value>); 1234static lv_style_t...
位置
对象的大小和位置1.对象的显示模型一个对象的所有像素包括以下4部分: 边界(bounding)框:元素的宽度/高度围起来的区域。 边框(border)宽度:边框的宽度。 填充(padding):对象两侧与其子对象之间的空间。 内容(content):如果边界框按边框宽度和填充的大小缩小,则显示其大小的内容区域。 2.改变对象位置的方式(1)直接方式 123lv_obj_set_x(obj, 10);lv_obj_set_y(obj, 20);lv_obj_set_pos(obj, 10, 20); //Or in one function (2)百分比 lv_obj_set_x(btn, lv_pct(10)); //x = 10 % of parant content area width (3)设置对齐 123456//与父对象对齐void lv_obj_align(struct _lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs,...
(三)定时器
(三)定时器一、MSP430单片机的定时器概述MSP430共有4个16位定时器,主要包括定时器A的0、1、2以及定时器B,每个定时器输出通道个数不同。 时钟源包括ACLK、SMCLK和TACLK 二、定时器的工作模式定时器主要包括4个工作模式: ① 停止模式。 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A定时器工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_A仍然工作于增/减计数模式下,从暂停前的状态开始继续沿着下降方向开始计数。若不想这样,则可通过TAxCTL中的TACLR控制位来清除定时器的计数及方向记忆特性。 ②...
(二)外部中断
(二)外部中断1.中断概述MSP430单片机的中断优先级是固定的,由硬件确定,用户不能更改。当多个中断同时发生中断请求时,CPU按照中断优先级的高低顺序依次响应。MSP430单片机包含3类中断源:系统复位中断源、不可屏蔽中断源和可屏蔽中断源。 可屏蔽中断源是具有中断功能的片上外设所产生的。由状态寄存器SR的GIE位控制,当GIE=0时,所有中断使能。当GIE=1时,所有中断使能 以下是MSP430所有中断 在使用外部中断时,由于其是可屏蔽中断,所以必须要置位GIE 可以通过 123_EINT();//开启_DINT();//关闭 或者 12__bis_SR_register(GIE);//开启__bic_SR_register(GIE);//关闭 开启或关闭。 2.中断写法1234567891011121314151617#pragma vector = PORT2_VECTOR // P2口中断源__interrupt void Port_2 (void) // 声明一个中断服务程序,名为Port_2(){ ...
14 阻塞与非阻塞IO
Linux阻塞与非阻塞IO阻塞与非阻塞的区别 阻塞:在对fd执行IO操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入睡眠状态,被从调度器的运行队列移走,直到等待的条件被满足 非阻塞:在不能对fd进行IO操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止 应用层的代码上两者的区别: 1234567// 阻塞IOchar buf;fd = open("/dev/ttyS1", O_RDWR);...res = read(fd,&buf,1);// 只有读到数据了才会返回 if(res==1) printf("%c\n", buf); 12345678// 非阻塞IOchar buf;fd = open("/dev/ttyS1", O_RDWR|O_NONBLOCK);...while(read(fd,&buf,1)!=1){continue;} /* 串口上无输入也返回,因此要循环尝试读取串口...
15 input子系统
...
01 应用开发概述
...
001 基本概念
基本概念节点定义:每个节点负责一个单独的模块化的功能,本质上就是一个进程,也是可执行文件 节点之间的通信方式 话题、服务、动作、参数 CLI工具运行一个节点 ros2 run <功能包名字> <可执行文件名> 查看节点列表 ros2 node list 查看节点信息 ros2 node info <node_name> 运行时重映射节点名称 ros2 run <pkd> <node_name> --ros-args --remap __node=:xxxx 功能包定义:实现一个功能可能需要多个节点,ROS将实现某功能的多个节点看成一个功能包 功能包的手动编译有3种方式: ament_python(python) ament_cmake(ROS2定义的一系列CMake函数) cmake 手动编译的功能包一般需要手动source工作空间的install目录 除了手动编译,也可直接下载开源功能包: sudo apt install...
002 节点间的通信
节点间的通信发布-订阅模式注意事项1.发布、订阅的接口类型要相同,比如都是字符串类型的 2.发布者和订阅者可以是1对n、n对n、n对1的 可视化rqt_gragh可以可视化目前所有节点 topic常用指令1.返回系统当前所有topic ros2 topic list 2..返回系统当前所有topic及其数据类型 ros2 topic list -t 3.打印实时话题信息 ros2 topic echo /<话题name> 4.查看话题信息:发布者和订阅者个数、数据类型 ros2 topic info /<话题name> 5.查看消息具体内容 ros2 interface show <消息类型> 6.手动发送话题信息 ros2 topic pub <数据类型> <具体数据> CPP实现订阅者节点具体步骤: 1.导入消息的类型,如std_msgs/msg/string.hpp 2.创建订阅者 3.创建订阅的回调函数
004 常用工具
常用工具Launch作用:通过Launch工具,我们可以同时启动多个节点,并且给节点传递参数 开发方式有3种开发方式,分别是用python、xml和yaml文件 使用方式参考:1.启动管理工具-Launch编写脚本 1ros2 launch <pkg> xxx.py colconcolcon就是ros2中用来编译功能包的工具(ros1中是catkin)简单来说,colcon是cmake的更高级的封装: 程序在cmake编译是这样的流程:cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件 colcon是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径,它会自动生成install和build和log文件夹 123456789# 在一个CMake项目里 mkdir build cd build cmake .. make make install # # 使用colconcolcon build ...








