自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (6)
  • 收藏
  • 关注

原创 C语言base64编码转码

一、最近,在做一个智能锁项目,锁上具有一个猫眼摄像头,当有客人来访时,需要通过猫眼抓拍图片上传到手机app端,让主人知道来访者是谁,项目中使用到了Base64编解码技术,所谓Base64编解码就是把每三个8bit的字节转换为四个6bit的字节(3*8 = 4*6 = 24),然后把6bit的字节再添两位高位0,组成四个8bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。例如:转换前 11111111, 11111111, 11111111 (二进制)转换后 0011111...

2020-06-30 16:10:45 1295

原创 RGB 和 HSV 互相转换算法

一、简介 RGB 是我们接触最多的颜色空间,分别为红色(R),绿色(G)和蓝色(B)。HSV 是用色调H,饱和度S,明亮度V来描述颜色的变化,H取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。饱和度S越高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。H表示颜色明亮的程度,对...

2020-02-29 11:34:46 27776 6

原创 alios things ntp获取时间

alios things 中还有另一种获取时间的方法,使用ntp服务获取时间,物联网平台借鉴NTP协议原理,将云端作为NTP服务器。设备端发送一个特定Topic给云端,payload中带上发送时间。云端回复时在payload中加上云端的接收时间和发送时间。设备端收到回复后,再结合自己本地当前时间,得出一共4个时间。一起计算出设备端与云端的时间差,从而得出端上当前的精确时间。注意:只有设备端与云...

2019-08-18 21:47:51 2944 2

原创 alios things IOT_Linkkit_Query查询时间

在alios things中我们经常需要用到时间,比如在智能插座开发中,开发倒计时或者本地定时功能时就会用到时间,所以这次我们说说使用IOT_Linkkit_Query获取时间的步骤:注意:先决条件是要连上阿里云平台一、注册一个接收时间的回调函数static void set_time(time_t time)//用于同步本地RTC时钟{ mico_rtc_time_t ...

2019-08-18 21:16:39 1202

原创 alios things开关5次配网

一、前言 在物联网中,有很多场景下都需要用到这种功能,我之所以做这个功能主要是因为公司正在做一个智能灯项目,而灯最常见的配网方式就是开关电源5次,常见的流程是 “开关5次,指示灯闪烁,清除原有热点信息,进入配网状态”。二、代码 定时器 定时器主要有2个任务,第一,当按键开关按下后,在一定时间内(3s或5s)如果没有再次按下,表示不是连按系统正...

2019-08-15 23:48:51 1410

原创 mico中长短按

刚出来工作两个月,学到不多不少,刚开始是在alios things上对wifi做二次开发,用庆科的3080弄了一个pwm冷暖色调的智能灯,成果出来后发现3080模块块头实在是太大,只好转战mico,在mico上又做了四路入墙开关和智能插座。项目终于结束,现在终于有时间整理一下收获了,我们今天先从按键长短按开题static void linkkit_reset(void)//清...

2019-08-14 23:45:39 675

原创 STM32 esp8266使用

简述在我们做项目开发中,经常会用到WiFi,这次给大家分享一下我在使用WiFi的过程中总结的一些经验,这次用到的是esp8266WiFi模块,如图所示。         引脚连接:GND:接地GPIO16:其实是RST,低电平复位,为了正常工作,直接连接VCC。VCC:接3.3V,注意:接5V会烧坏模块。UTXD:接单片机或USB转串口模块的RXDURXD:接单片机...

2018-11-09 21:26:53 13293 2

原创 STM32 SPI通信协议总结

简介       SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。       SDO  --主设备数据输出,从设备数据输入       SDI...

2018-10-28 15:05:29 3888 2

原创 makefile通用模板

makefile多文件目录结构通用模板

2022-06-26 22:00:25 185 1

原创 STM32 FreeRTOS的乱七八糟设计

一、硬件设计PA2、PA3--------------WIFIPC0、PC1--------KEY(输出)PA0-------------------DHT22(输入)PB10、PB11------------SGP30(IIC)PB6、PB7--------------OLED(IIC)PB5、PB0、PB1---------RGBLED(输出)PC4、PC5---------继电器(输出)PA9、PA10-------------串口打印接口二、系统主程序跑两个任务

2020-12-25 10:28:55 494

原创 代码提交git步骤

第一步 从仓库下载代码,在git上创建好仓库后,会产生一个master分支,里面一开是什么都没有,通过下面链接下载下来git [email protected]:lly3485390095/LLY.git,下载下来后把它放到需要上传的代码文件夹中。第二步 查看所有分支,创建新的分支git branch -agit branch [branch name]第三步 切换到新的分支git checkout [branch na...

2020-09-15 14:17:09 223

原创 基于Openwrt的sqlite3移植与使用

一、移植sqlite3 进入openwrt,make menuconfig选择Libraries --->database --->libsqlite3,保存退出。再选择Utilities --->database ---> sqlite3-cli,保存退出,然后make V=99,将编译好的固件openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin烧录进开发板。二、sqlite3的使用...

2020-08-15 10:16:05 832

原创 基于Openwrt的串口编程

一、头文件#include <stdio.h> /*标准输入输出定义*/#include <errno.h> /*错误号定义*/#include <sys/stat.h>#include <fcntl.h> /*文件控制定义*/#include <termios.h> /*POSIX 终端控制定义*/#include <stdlib.h> /*标准函数库定义*/#include <sys/

2020-07-31 11:04:03 947

原创 基于Openwrt系统的mosquitto移植与使用

一、移植mosquitto 进入openwrt,make menuconfig选择Libraries选中libmosquitto-nossl和libncurses,保存退出。再选择Network选中mosquitto,保存退出,然后make V=99。二、mosquitto的使用 经过编译以后,我们在/openwrt-hiwooya/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/mosquitto-nossl/mos...

2020-07-31 10:16:44 2266 4

原创 pythonTCP通信与多线程

服务端        服务器进程首先要绑定一个端口并监听来自其他客户端的连接。如果某个客户端连接过来了,服务器就与该客户端建立Socket连接,随后的通信就靠这个Socket连接了。所以,服务器会打开固定端口(比如80)监听,每来一个客户端连接,就创建该Socket连接。由于服务器会有大量来自客户端的连接,所以,服务器要能够区分一个Socket连接是和哪个客户端绑定的。一个Socket依赖4项...

2018-12-24 17:32:25 726

原创 tensorflow 实现线性回归

简介tensorflow这个库集成了很多算法,这次主要是用它实现简单的线性回归,线性回归包括一元线性回归和多元线性回归,一元线性回归方程大概是这样 y=ax+b,而我们训练模型的目标即通过大量数据把a和b的值训练出来,x表示特征,a表示x的权值,b表示偏置值。同理多元线性方程的目标把0、1、2...等训练出来。在tensorflow中代码实现如下:import tensorflo...

2018-11-26 16:24:22 160

原创 python与机器学习

我的python进价之路,从学习python的基本语法开始,相比C语言多了列表,元组,字典的概念  https://www.bilibili.com/video/av28148919?from=search&amp;seid=5516814540756837019机器学习算法的初认识,从线性回归,逻辑回归,决策树,SVM等,深入了解机器学习   https://www.bili...

2018-11-21 23:33:30 188 2

原创 python初入门体验

      本人是嵌入式开发方向,开始学习python是因为要做一个关于机器学习的毕业设计,接触python一个星期了,刚开始是一头雾水啊,特别是安装环境,由于有C语言的基础,学习python基本语法感觉没什么难度,让我最烦的其实是在学习过程中各种库的安装,比如numpy、matplotlib,还有cgi的使用,这个简直是头疼,搞了两天环境最后还是没弄出来,网上的教程也是各种花样,没有一个完整的教...

2018-11-18 21:36:37 124

原创 STM32 ADC转换

  简介        STM32的ADC是12位逐次逼近型的模拟数字转换器,ADC模块读到的数据是12位的数据,是从0到4095(111111111111)的值,当把ADC引脚接了GND,读到的就是0,当把ADC引脚接了VDD,读到的就是4095。STM32最多支持18个通道,可最多测量16个外部和2个内部信号源,ADC的各通道可以单次,连续,扫描或者间断模式执行。         ...

2018-11-11 11:46:50 1466

原创 STM32 PWM笔记

关于PWM的STM32         stm32的定时器除了TIM6和TIM7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出。而通用定时器也能同时产生多达4路PWM输出,stm32最多可以同时产生30路PWM输出。通用定时器TIMx产生PWM输出,用到寄存器:捕获/比较模式寄存器TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_...

2018-10-29 19:54:26 733

原创 STM32 单总线1-wire

概述       1-wire总线是一个具有单总线主机和一个或者多个从机的系统,一般在任何情况下单总线设备(如18B20)都是从机设备,主机一般是一颗MCU。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。1、初始化(复位和应答)       主机通过拉低单总线480 ~ 960 us产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,会产生低电平跳变为高电平...

2018-10-26 10:24:11 6286

原创 STM32 IIC总结

        IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。它在传输数据过程中有三种特殊类型信号,分别是:开始信号、结束信号和应答信号。IIC通信:IIC通信无论发送还是接收,都需要结合时钟SCL来进行数据SDA的传输,因此一次要使用两条线。传输数据与时钟有关,因此称为同步串行通信总线空闲状态:     I2C总线总线的SDA和SCL两条信号线同时处于高电平时,...

2018-10-23 19:53:10 1191

原创 STM32 串口总结

        通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。同步通信...

2018-10-23 10:07:20 400

原创 STM32 定时器总结

STM32F103系列有11个定时器:          2个高级定时器(TIM1,TIM8):高级定时器除了具有基本定时器和通用定时器的功能以外,还具有输出互补带死区的信号,以及刹车等功能。         4个通用定时器(TIM2,TIM3,TIM4,TIM5):通用定时器(TIM2~TIM5)除了基本的定时功能以外,还具有输入捕获和输出比较,产生pwm波形的功能。        ...

2018-10-22 08:51:56 2187 1

原创 STM32 中断总结

        STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组:        第0组:所有4bit用于指定响应优先级;        第1组:最高1位用于指定抢占式优先级,后...

2018-10-22 08:47:28 604

原创 STM32 时钟总结

STM32 时钟源HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 HSE是高速外部时钟,可以由有源晶振或者无源晶振提供,频率从 4-26MHZ不等。当使用有源晶振时,时钟从 OSC_IN 引脚进入, OSC_OUT 引脚悬空,当选用无源晶振时,时钟从 OSC_IN 和 OSC_OUT 进入,并且要配谐振电容LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 ...

2018-10-20 15:03:52 1247

原创 STM32 GPIO 总结

GPIO 外设是挂载在 APB2 总线上的, APB2 的时钟是 APB2 预分频器的输出,而 APB2 预分频器的时钟来源是 AHB 预分频器。因此,把APB2 预分频器设置为不分频,那么我们就可以得到 GPIO 外设的时钟也等于 HCLK(等于系统时钟)。GPIO 相关寄存器:   两个32位的配置寄存器 GPIOx-&gt;CRL,GPIOx-&gt;CRH 两个32位的数据寄存...

2018-10-20 14:19:30 594

原创 经典面试

1、const 关键字  char const *p = &amp;c;    //不能改c中的内容,p是指向字符型常量的指针                                                                                             const char *p = &amp;c;    //不能改c中的内容,p是指向...

2018-10-17 20:04:46 145

原创 常用库的移植安装使用

JPEG库的移植                         解压缩                            tar  -zxvf  jpegsrc.v9a.tar.gz                            cd  jpeg-9a/                         对jpeg源码进行配置                         ...

2018-10-12 09:34:29 252

原创 Linux网络编程(socket通信)

TCP协议 客户端client 服务端server 创建tcp类型套接字 创建tcp类型套接字 绑定 绑定 连接服务器 ...

2018-10-10 20:09:10 504 1

原创 关于多进程与多线程

多进程                1、进程的创建fork()                    #include &lt;unistd.h&gt;                    pid_t fork(void);                    pid_t vfork(void);                        返回值:    &gt; 0     ...

2018-10-10 20:07:03 126

原创 文件操作

系统IO            1、open()                #include &lt;sys/stat.h&gt;                #include &lt;fcntl.h&gt;                int open(const char *pathname, int flags);                int open(const...

2018-10-10 20:04:29 137

原创 数据结构总结

1、顺序表        typedef struct ARRAY //用于管理顺序表的数据类型        {            int * parr;//顺表的起始地址            int len;//表示能够存储的数据节点的个数            int cnt;//已经使用了的表项个数            }ARR,*PARR;        void...

2018-10-10 20:03:34 144

原创 Linux基础编程

1、shell核心命令        pwd            查看当前路径        cd            改变当前路径            cd        回到当前用户主目录            cd -        回到刚才的目录        mkdir            创建新目录        rm dir            删除空目录...

2018-10-10 19:58:43 100

原创 C语言总结

一、C语言    1、基本数据类型        布尔型        bool        整形        short\int\long\unsigned short\unsigned int\unsigned long        浮点型        float\double\long double        字符型        char\unsigned char...

2018-10-10 19:55:59 121

模拟任务轮询,可用于裸机

模拟任务轮询,可用于裸机

2023-01-06

yaml文件加载和解析

yaml文件加载和解析

2023-01-04

TCP代理,客户端+服务端

TCP代理,客户端+服务端

2023-01-04

C++ log调试日志输出

C++ log调试日志输出

2023-01-04

json加载文件和json解析

json加载文件和json解析

2023-01-04

C++设计模式学习框架

C++设计模式学习框架

2023-01-04

C++基础和进阶学习框架

C++基础和进阶学习框架

2023-01-04

FSM有限状态机模拟例程

FSM有限状态机模拟例程

2023-01-04

按键模拟长按短按双击驱动

按键模拟长按短按双击驱动

2023-01-04

makefile多文件目录模板

makefile模板,多源文件目录结构

2022-06-26

STC8G-STC8H-LIB-DEMO-CODE-20210804.rar

STC8G和STC8H系列单片机官网例程,资源包括GPIO\IIC\UART\PWM\ADC等例程

2021-11-02

FreeRTOS.rar

STM32 FreeRTOS的一个具有按键、继电器、RGBled、温湿度传感器、CO2\TVOC传感器的设计

2020-12-25

mosquitto库.rar

一、移植mosquitto 进入openwrt,make menuconfig选择Libraries选中libmosquitto-nossl和libncurses,保存退出。再选择Network选中mosquitto,保存退出,然后make V=99,将编译好的固件openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin烧录进开发板。 二、mosquitto的使用 经过编译以后,我们在/openwrt-hiwooya/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/mosquitto-nossl/mosquitto-1.4.10/lib这个目录下找到libmosquitto.a这个静态库,在/openwrt-hiwooya/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/c-ares-1.10.0/ipkg-install/usr/lib目录下找到libcares.a这个静态库,把这两个库添加到我们的工程目录中,并且把libmosquitto.a所在目录下的所有头文件包含在我们的工程中,完成后即可使用mosquitto的API。

2020-08-15

sqlite3源码.rar

很多时候,我们在做项目的时候,需要用到一些本地的数据库,sqlite3是非常好的选择,sqlite3源码,sqlite3.c是源码文件,sqlite3.h是对应的头文件

2020-08-15

基于Linux摄像头编程

基于Linux的摄像头编程,编程步骤:打开摄像头驱动,设置摄像头的采集通道,获取摄像头的采集格式,申请缓冲块,定义自己封装的结构体指针分配堆空间,开始摄像头采集,将画面入队,循环显示视频流 不断的入队出队,将出队的这张画面保存成jpg显示在开发板的lcd上

2018-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除