- 博客(76)
- 资源 (7)
- 收藏
- 关注
原创 基于腾讯云的物联网云端数据传输-STM32F103C8T6(微信小程序显示数据).一
/*本工程实例现象:实现时间或者其他传感器函数在腾讯云的微信小程序上进行显示;微信小程序的控制按钮可以控制开发板上的灯进行闪烁;工程适用范围:测试时适用的STM32F103C8T6库版本:HAL库函数注意: LED灯 RGB IO分配R PB5G PB6B PB7 ESP8266连接 TX PA3 RX PA2 RST PB8(在ESP8266.h中进行宏定义改变) VCC 3.3V 串口打印信息 USB转TTL RXD PA9 TXD
2022-04-20 20:13:11 5636 5
原创 RT-Thread物联网操作系统介绍:14、软件定时器
一个定时器显示函数执行的时间另外一个定时器显示计数值工程参考例程在:RT-Thread物联网操作系统介绍/* 定义线软件定时器制块 */static rt_timer_t S_Timer1 = RT_NULL;static rt_timer_t S_Timer2 = RT_NULL;static uint32_t xTimers1 = 0;static uint32_t xTimers2 = 0;//定时器1回调函数tatic void S_Timer1_callback(void
2022-04-12 10:05:46 325
原创 RT-Thread物联网操作系统介绍:15、静态内存池使用
程序运行,创建一个内存池,一个申请内存任务,一个释放内存任务,usb串口CN3打印内存分配和释放的信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍//创建内存池 Sample_mp = rt_mp_create("Sample_mp", 20, /* 内存块数量 */ 30); /* 内存块大小 *
2022-04-12 10:05:33 388
原创 RT-Thread物联网操作系统介绍:16、动态内存使用
程序运行,一个申请内存任务,一个释放内存任务,usb串口CN3打印内存分配和释放的信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍//定义内存块大小#define Block_SIZE 200/* 定义申请内存的指针 */static rt_uint32_t *p_Sample = RT_NULL;static rt_thread_t TASK1_Thread = RT_NULL;```c rt_kprintf("正在向内存堆申请内存........
2022-04-12 10:04:58 327
原创 RT-Thread物联网操作系统介绍:13、消息邮箱
程序运行,创建一个消息邮箱,一个按键发送消息任务TASK1,一个消息接收任务TASK2,usb串口打印消息邮箱的发送和接收信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍static rt_mailbox_t Sample_mail = RT_NULL; //消息队列控制块char Sample_Msg1[] = "this is a mail Msg 1"; /* 邮箱消息Msg1 */char Sample_Msg2[] = "this is a mai
2022-04-11 21:57:49 945
原创 RT-Thread物联网操作系统介绍:12、事件标志组
程序运行,创建一个事件标志组,一个按键发送事件任务,一个接收事件任务,按键每按下KEY1或KEY2,发送一个事件,接收任务全部接收到KEY1和KEY2发送的事件才会唤醒,事件发送、接收都会通过USB串口打印信息,串口波特率115200#define BIT_0 (0x01 << 0)//设置事件掩码的位0#define BIT_1 (0x01 << 1)//设置事件掩码的位1/* 创建一个事件 */ Sample_event = rt_event_create("Sa
2022-04-11 21:56:10 436
原创 RT-Thread物联网操作系统介绍:11.2、互斥信号量 (优先级正常)
只能有一个信号量线程在执行程序运行,创建一个LED任务(中优先级),2个任务TASK1(低优先级)和TASK2(高优先级),LED任务每隔1S翻转D3彩灯的红色指示, 通过usb串口输出观察任务运行情况,看看在高优先级任务阻塞的情况下,中优先级任务会不会优先运行(发生优先级翻转),利用互斥信号量,发现是不会发生翻转的,串口波特率115200高优先级任务在阻塞时,中优先级任务不会有限运行,优先级不会发生翻转;工程参考例程在:RT-Thread物联网操作系统介绍 /* 创建一个互斥量 */
2022-04-11 21:54:11 278
原创 RT-Thread物联网操作系统介绍:11.1、多值信号量(优先级翻转)
程序运行,创建一个LED任务(中优先级),2个任务TASK1(低优先级)和TASK2(高优先级),LED任务每隔1S翻转D3彩灯的红色指示, 通过usb串口输出观察任务运行情况,看看在高优先级任务阻塞的情况下,中优先级任务会不会优先运行(发生优先级翻转),多值信号量,发现是会发生翻转的,串口波特率115200主要问题:高优先级任务在阻塞下,中优先级任务会运行,发生优先级的翻转工程参考例程在:RT-Thread物联网操作系统介绍/* 创建一个信号量 */ Sample_sem = rt_sem_
2022-04-11 21:52:29 883
原创 RT-Thread物联网操作系统介绍:10、计数信号量
工程参考例程在:RT-Thread物联网操作系统介绍 rt_sem_take(Sample_sem, /* 获取信号量 */ RT_WAITING_FOREVER); /* 等待时间:一直等 *///发布信号量之后会立即使用, /* 创建一个信号量 */ Sample_sem = rt_sem_create("Sample_sem",/* 信号量名字 */ 10,/
2022-04-11 21:48:21 1032
原创 RT-Thread物联网操作系统介绍:9、二值信号量
工程参考例程在:RT-Thread物联网操作系统介绍 /* 获取信号量 */ rt_sem_take(Sample_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */ /* 释放信号量 */ rt_sem_release(Sample_sem);#include "MyIncludes.h"static rt_sem_t Sample_sem = RT_NULL; /* 信号量控制块
2022-04-11 21:46:18 865
原创 RT-Thread物联网操作系统介绍:8、消息队列
工程参考例程在:RT-Thread物联网操作系统介绍 /* 创建一个消息队列 */ Sample_mq = rt_mq_create("Sample_mq", /* 消息队列名字 */ 4, /* 消息的最大长度 */ 20, /* 消息队列的最大容量 */ RT_IPC_FLAG_FIFO); /* 队列模
2022-04-11 21:44:20 398
原创 RT-Thread物联网操作系统介绍:6、线程挂起和恢复
//恢复线程函数rt_thread_resume(LED_Thread);//挂起任务函数uwRet = rt_thread_suspend(LED_Thread);工程代码百度网盘链接网址在:RT-Thread物联网操作系统介绍#include "MyIncludes.h"static rt_thread_t LED_Thread = RT_NULL;/********************************************************************
2022-04-11 21:39:57 1299
原创 RT-Thread物联网操作系统介绍:5、串口打印
rt_kprintf("beep_thread running,toggle\r\n");工程参考例程在:RT-Thread物联网操作系统介绍#include "MyIncludes.h"/* 定义线程控制块 */static struct rt_thread LED_Thread;static struct rt_thread BEEP_Thread;/* 定义线程控栈时要求RT_ALIGN_SIZE个字节对齐 */ALIGN(RT_ALIGN_SIZE)/* 定义线程栈 .
2022-04-11 21:36:49 2077
原创 RT-Thread物联网操作系统介绍:0、静态线程&&动态线程的区别
使用环境:STM32F103C8T6单片机串口1进行数据打印波特率115200;LED灯IO: PA6、PA7、PB0静态线程&&动态线程的区别区别:①动态线程不需要输入栈的起始地址,不需要定义线程的控制块,只要指出线程栈的大小。②静态线程的线程控制块和线程栈都需要静态地定义出来,而动态线程则不需要提前定义出来,是运行的时候自动分配的。运行效率上,静态线程的线程控制块和线程栈都在芯片的RAM中,速度没有区别,但是系统在外部RAM中的时候,创建的外部动态线程的线程栈和线程控制
2022-04-11 21:33:20 2890
原创 联盛德W806入门教程-CDK安装教程及代码下烧录
笔者使用的系统板如下图所示:首先安装代码编译软件CDK;硬件:⚫ W805/W806 开发板 ⚫ USB 转串口线软件:Windows 端编译工具:CDK 安装包链接:[https://pan.baidu.com/s/1mslRbcuC0oGrNsjQJY3wHQ](https://pan.baidu.com/s/1mslRbcuC0oGrNsjQJY3wHQ)提取码:qdut烧录工具:W800 Upgrade Tools.exewww.winnermicro.com工程文件:SDKw
2021-12-02 21:34:39 2978
原创 STM32F103C8T6通过内部Flash写入读取数据,模拟EEPROM(附代码)
STM32F103C8T6通过内部Flash写入读取数据,模拟EEPROM(附代码)优点:1. 模块化编程,方便移植,集成度高;2. 拿来直接用Flash空间定定义主函数初始化已经Flash的读取与写入Flash写入数据,自加Flash读取数据但是Flash的擦除次数有使用寿命,但是正常使用没有问题吧。这次代码运行已经读取近1000次。附代码:百度网盘链接 提取码:8888肯定下载直接运行,使用与STM32F103C8T6单片机,如果采用C6T6单片机则需要将Flash的数
2021-10-11 10:26:26 4739 8
原创 基于STM32的ESP8266 WIFI与ONENET通信连接(2),云平台以及手机APP数据显示
首先,如果未了解STM32如何通过WIFI将数据读取传输到云平台可跳转连接进行之前步骤的操作。第一步,在实现STM32将传感器数据采集之后,并且完成WIFI配网步骤,可以正常通过ESP8266WIFI模块正常将数据发送到云平台之后进行以下阅读,上述内容可以跳转到以下链接进行查看具体操作。将数据进行可视化处理步骤;1.登陆oneNET进入控制台如果按(1)中完成注册配置之后再次进入可以看到以下情况“多协议接入”点击进入后选择你创建的产品,然后选择2.进入编辑应用当重复多次,将
2021-10-06 11:31:27 30102 13
原创 基于STM32的ESP8266 WIFI与ONENET通信连接(1),实现温湿度数据互传,LED控制
一、需要准备的材料:1.JLink或者STLink下载器;2.STM32F103C8T6系统板、核心板3.ESP-01S,ESP8266WIFI模块(先进行恢复出厂,波特率设置为115200,默认波特率115200)【ESP8266 连接串口之后,波特率设置115200;发送AT,应答OK;发送AT+RESTORE,应答OK;然后自动重启,出厂设置恢复;】4.DHT11温湿度模块,蜂鸣器,LED灯5.需要到注册ONENET账号进行开发6.手机热点或者能联网的路由器WIF账号二、注册O
2021-10-02 19:41:29 24776 53
原创 Ubuntu系统虚拟机与Windows如何互传文件
通过软件尽将再Windows系统文件传送到虚拟机Linux中虚拟机下 config -a 命令查看IP地址修改IP 192.168.1.109连接需要添加Linux虚拟机登陆密码,之后即可
2021-08-24 21:43:52 392
原创 基于haarcascade_frontalface_default的人脸识别实例
基于OpenCV中haarcascade_frontalface_default的人脸识别实例1.准备条件开源计算机视觉库运行环境: pycharm准备图片:网上寻下载zip文件,解压后找到2.通过以下代码在pycharm中运行需要准备的图片,在网上随便找一下叭,记得haarcascade_frontalface_default.xml文件添加到*.py和pho.jpeg相同路径下即可。# 导入模块import cv2#加载一张待检测的人脸,可直接将图片替换,或者更改路径;img =
2021-08-23 21:43:02 7831 1
原创 LittleVGL之标签控件
标签,其实生活中接触到的标签很多,就是简短的商品介绍或者单价啥的。说白了就是简短的一两句话,可以英文也可以中文。接下来介绍一下标签控件; void label_test(void){ lv_obj_t * label1 = lv_label_create(lv_scr_act(), NULL); lv_label_set_long_mode(label1, LV_LABEL_LONG_BREAK); /*Break the long lines*/ lv_label_se
2021-04-13 16:02:57 312
原创 LittleVGL之日历控件
对于日历控件,顾名思义。和日历样式一样,我们先看效果图;对于图中所示的样式一样,我们可以通过程序可以任意设置其样式和跳转到固定日期。static void calender_event_handler(lv_obj_t * obj, lv_event_t event){ if(event == LV_EVENT_CLICKED) { lv_calendar_date_t * date = lv_calendar_get_pressed_date(obj); i
2021-04-13 15:43:04 198
原创 LittleVGL-列表控件
lv_list 列表控件是由一个作为背景的 page 页面和一些作为列表项的按钮构成的,其中的 每一个列表项按钮是由可选的左右俩部分构成,左侧是用来放图标的,右侧是用来放文本的,具体的构成示意图如下所示:直接拍运行效果:代码如下:void list_event_handler(lv_obj_t * obj, lv_event_t event){ if(event == LV_EVENT_CLICKED) { printf("Clicked: %s\n", lv_list_
2021-04-09 10:58:27 880
原创 LittlVGL之线条控件
这里不对线条控件讲太多原理;看效果再讲就是这样,可以根据需求任意勾勒线条;可以根据数学公式也任意进行勾画;比如画椭圆,画⚪,当然这样会很麻烦;画线条线表还是很方便;代码解释如下:void line_test(void){ static const lv_point_t line_Ins[] = {{30,90} ,{30,25},{720,25},{720,450},{30,450},{30,85},{720,85},{720,145},{30,145},{30,210},{720,210}
2021-04-09 08:57:28 969
原创 Little VGL之仪表控件
对于仪表控件,类似于汽车仪表盘一样;也是已经继承好的,我们只需设置修改即可;代码如下:void gauge_test(void){ /*Create a style*/ static lv_style_t style; lv_style_copy(&style, &lv_style_pretty_color); style.body.main_color = lv_color_hex3(0x666); /*开始的刻度条颜色*/ style
2021-04-09 08:56:47 422
原创 LittleVGL-键盘控件
前面讲述了独立按钮以及矩阵按钮,会了前两者之后,接下来的矩阵键盘按钮可能会惊艳到你。先看仿真效果;这个仿真出来的键盘就是littleVGL图形化界面上的一个简单控件,几行代码就完整的将其功能实现,接下来贴出代码:`void kb_test(void){ /*Create styles for the keyboard*/ static lv_style_t rel_style, pr_style; lv_style_copy(&rel_style, &lv
2021-04-07 09:42:48 720
原创 单片机的PCA模块
单片机的PCA模块PCA(可编程计数器阵列Programmable Counter Array)可编程计数器阵列(PCA)提供增强的定时器功能,与标准8051计数器/定时器相比,它需要较少的CPU干预。由高字节(PCAH)和低字节(PCAL)组成。使用单片机的pca模块可以实现pwm功能,比如要输出一个固定的频率,那么单片机只要开机时,把pca的相关寄存器配置一下,频率就出来了,单片机也不用...
2021-04-07 09:37:55 4560
原创 LittleVGL入门之矩阵按钮控件
故名思意,按钮就是单独的一个按键。但是,相对于矩阵来说,那最通俗的就是很多个按钮封装到一个容器里,然后组成了矩阵的形状。具体的和按钮的功能是一样的。常见的矩阵按钮有26拼打字的键盘以及数字输入法等等。下面开始介绍LittleVGL中 的矩阵按钮控件如何使用。//矩阵按钮事件回调函数static void btm_event_handler(lv_obj_t * obj, lv_event_t event){ if(event == LV_EVENT_VALUE_CHANGED) {
2021-04-07 09:35:22 353 1
原创 LittleVGL入门之按钮控件
说起来按钮控件,其实就是一个按键,只不过这个按键可以操作样式,还可以选择按下弹起或者按下不弹起等状态。通过事件回调函数都按键按下所需要执行的内容进行处理。上代码;static lv_obj_t * btn1; //按键对象一定要是全局变量,因为在按钮函数里用完设置之后还需要在事件回调函数里进行引用判断static lv_obj_t * btn2;static lv_obj_t * btn_label;//这个标签控件一般是局部变量,但是为了显示效果,这里将其通过按钮按下显示不同的内容static
2021-04-07 09:23:29 558
原创 LittleVGL开发之显示中文字体以及矢量图标
一般图形化界面开发都需要有中文显示,原来的时候用stm32开发LCD屏幕都是通过软件生成文字字库,然后进行调用字库。但是现在是基于图形化界面的系统,那么显示中文,当然会和原来的方式有所不同。一下方式是基于LittleVGL图形化界面系统的中文显示。首先,字体应该是属于一个样式style,我们设置好这个样式之后调用即可。我们先来看如何生成字体,字体有什么区别。1.字体都有不同的样式,有楷体,宋体,数码管字体,华文行楷等等。我们则需要准备对应的字体文件。一般windows系统下,在以下目录可以找到电脑安装
2021-04-06 09:34:28 1757
原创 STM32的NVIC中断以及抢占优先级和响应优先级
一、抢占优先级和响应优先级STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中
2021-04-02 09:28:23 3123
原创 树莓派配置并且运行LittleVGL图形化界面
littleVGL源码文件包链接首先树莓派需要安装好Qt,我的博客里有说明如何安装Qt。安装好Qt之后需要安装SDL2安装Qt的命令sudo apt-get install qtcreator qt5-default安装好我们需要安装SDL2sudo apt-get install libsdl2-dev libsdl2-ttf-dev都安装好之后我们需要打开Qt,对Qt的编译调试环境进行配置j结束后点击OK。退出。。。把下载好的QT_LittleVGL压缩包放到桌面
2021-03-31 23:13:11 1238
原创 树莓派安装Qt教程
1.首先安装前一定要更新sudo apt-get updatesudo apt-get upgrade2.安装QT的基本库sudo apt-get install qt5-default3.安装QT的IDEsudo apt-get install qtcreator4.安装QtQuick库sudo apt-get install qtdeclarative5-dev5.安装QtMultimedia库sudo apt-get install qtmultimedia5-devsudo a
2021-03-31 22:44:43 3047
原创 树莓派解压tar.gz文件报错已经命令
**解决gzip: stdin: not in gzip format问题tar -zxvf 报错分析原因tar -zxvf 报错gzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now报错原因是这个压缩包没有用gzip格式压缩,所以不用加z指令就可以了第一种方法:直接使用: tar -xvf vendor.tar.gz 即可第二种方法:
2021-03-31 22:35:14 2073
原创 树莓通过VNC连接后可进行的配置
我们通过VNC连接好之后的届界面如下:不知道如何连接的同学可以去我的博客里查找一下方法;打开这里我们可以进行很多配置:更改用户名、密码一般如下几个是需要打开的,而且是非常常用的,这里看自己的需求任意管理不要轻易关闭SSH和VNC,切记。另外我们还可以配置树莓派的语言,,,等等,以及时间设置啥的。截图如下;基本的简单操作就这样,下一次讲述一下如何安装at和python吧如果文中有误,烦请指出,共同进步。...
2021-03-31 19:19:31 145
原创 树莓派开机自动连接WIFI直接VNC连接界面
对于没有Linux开发经验的新手来说,入手树莓派肯定是有一定的难度,对于我来说,把我走过得弯路,入过的坑,填平。我接下来的讲述都是基于树莓派4B的4G版本,不带屏幕开发。我的树莓派装的系统如下图:我所用到的烧写系统的工具软件是:直接打开点下一步无脑安装即可。将系统压缩包解压后会出现树莓派的logo。直接双击打开安装即可。选择SD卡,我选用的32G内存卡。选好内存卡之后直接点击WRITE烧录即可,等到待十分钟左右。这样烧录的好处就是不需要将内存卡格式化,因为这个软件在你烧录系统的时候,开
2021-03-31 18:50:07 733
原创 LittleVGL开发之控件介绍
1.lv_obj基础对象这个的功能就是你在应用某个控件的时候,可以对你的控件进行设置;例如调整大小,色彩,摆放位置等等。所有的控件都可以是对象。 littleVGL是以对象为概念的,而其最核心的基础对象是lv_obj控件,其他的所有专用控件 (比如按钮,标签,列表等)都是在此 lv_obj 对象的基础上衍生出来的,所有的控件对象都具有一 些共同的属性,如下所示:1) 位置(Position)2) 大小(Size)3) 父类(Parent)4) 是否可拖拽(Drag enable)5) 是否可点击
2021-03-31 10:23:19 1561
原创 LittleVGL入门
首先说明一下littleVGL,我进行开发的时候就参考了一个官网链接和哔哩哔哩的一套正点原子开源视频和开发文档,链接贴出来如下:微雪课堂手把手教你学LittleVGL哔哩哔哩视频链接就这三个链接,开发图形化界面足矣。国内对于littleVGL的资料并不多,可能应用上的范围比较狭窄。但是相对于littleVGL的集成度和可移植性,轻量化的角度来看,littleVGL绝对是开发图形界面最好的工具。接下来我们来看一下需要准备的材料,在没有时间看视频的情况,可以看我的说明,可能对读者的用处更大。我把我走过
2021-03-31 08:59:12 3741 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人