自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (4)
  • 收藏
  • 关注

原创 为什么C语言访问内存地址需要指针?

MOV BYTE [678], 123当内存收到这一串信号时, 电路中的某8个存储单元就会响应, 这8个存储单元会记住代表“123”的开(ON) 或关(OFF) 的电信号。 为什么是8位呢? 这是因为指令里指定了“BYTE”。如果将BYTE换成WORD,那么123将会被解释成一个16位的数值。MOV AL, BYTE [SI]MOV指令有一个规则, 那就是源数据和目的数据必须位数相同。也就是说, 能向AL里代入的就只有BYTE, 这样一来就可以省略BYTE, 即可以写成:(AL是一个8..

2020-09-10 17:26:06 585 1

原创 排序算法 - 选择排序、插入排序、冒泡排序

首先我们先看一下选择排序的思想:每一趟(例如第i趟,i=0,1,2,…n-2)在后面n-i个待排的元素中选出关键字最小的元素,作为有序元素序列的第i个元素。这段表述乍一听是不容易理解的,我的理解能力比较差,所以学习的时候就直接跳过了。我始终认为对于数据结构来讲,画图永远是最有效、最直观的一种方式,从链表到队列,一直到目前学习的排序算法都是如此。以下动图均源自知乎用户:程序员吴师兄...

2020-03-26 13:48:01 342

原创 队列的特殊实现 - 用栈实现队列

用栈实现队列这种方式我是想不到的,不过却是很容易理解的一种方式算法的实现思路:准备两个用于栈实现队列:inStack和outStack1、当有新元素入队时 : 将其压入inStack 中2、当需要出队时 :(1)当outStack 为空时 : 将inStack 中的元素逐一弹出并压入outStack 中 将outStack 的栈顶元素弹...

2020-03-25 17:52:34 242

原创 栈的应用 - 符号匹配性检测

当我们用编译器编译工程的时候,时常会出现缺失大括号或者小括号等之类的情况。那么编译器是怎样实现符号匹配监测的呢?其实也是利用了栈的原理。首先来看一下算法的整体思路:1、从第一个字符开始扫描2、当遇到左符号时进栈,当遇到普通字符忽略3、当遇到右字符时,弹出栈顶的元素,并将右符号与弹出栈顶的符号进行匹配,如果匹配成功,则继续下一个字符;如果匹配失败,则停止程序并报错。4、成功结束...

2020-03-24 14:40:39 435

原创 柔性数组

柔型数组的定义:结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组。但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存。包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小。这种代码结构产生于对动态结构体的需求。这里使用实现静态链表...

2020-03-19 22:58:41 220

原创 Qt连接MySQL提示“QSqlDatabase: QMYSQL driver not loaded”

Qt连接MySQL出现此提示信息的原因是Qt Creator与MySQL位数不统一,使用MySQL5.2及以上的版本会出现这个问题。原环境:Qt Creator 4.5.0 Based on Qt 5.9.4 (MSVC 2015, 32 bit) MySQL 5.7.22 Win64其中Qt Creator在帮助中可以获取版本信息,打开MySQL控制台输入show variab...

2020-03-18 12:42:20 449

原创 void*数据封装

使用void*数据类型的封装,有两个作用1、void*表示“任意类型的指针”,用于函数的形参类型,表示可以接受任何的数据类型的参数传递进来。例如memcpy函数的原型如下void *memcpy(void *destin, void *source, unsigned n);参数 destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。...

2020-03-17 10:09:09 494

原创 APP访问服务器抓取页面显示所需数据

通过一段时间的学习,我们实现了一个简单的物联网系统,该系统以STM32嵌入式微控制器为主控下位机,采集温度传感器数据,通过esp8266 Wi-Fi芯片连接无线局域网访问自己在本机搭建的服务器,并将数据存储在数据库中。同时,用android stdio写一个简单的APP,用来抓取网页内容,实时显示当前环境温度。前面几篇博客,我们已经完成了大部分的工作,现在只针对安卓端进行说明。安卓APP用...

2019-10-14 17:21:16 1371 2

原创 stm32接入机智云平台实现app控制led灯

准备工具:stm32f407 单片机 esp8266 WiFi模块 PC 机智云app flash烧写工具第一步烧写机智云Gagent固件进入下载中心,选择硬件资源开发GAgent,选择我们要烧写的esp8266GAgent把烧写下载好的GAgent固件(1)选择和单片机匹配的flash大小(2)GAgent_00ESP826_04020034_32Mbit.bi...

2019-10-07 17:36:23 3167

原创 stm32+esp8266上传实时温度到本地服务器

在之前我们已经实现了esp8266和本地服务器的交互,并将数据写入到MySQL数据库中,但实际意义不大,我们需要实现将数据实时写入,所以需要添加传感器模块,并以单片机为主控处理数据,完成上传。这一次配置esp8266不再使用串口助手,而是将命令写到代码中自动完成。我们使用两个串口,串口一用来调试,串口三用作发送命令给esp8266。需要提前将手机打开设点,保证PC和esp8266都能连接,...

2019-10-07 08:49:01 6480

原创 通过DS18B20学时序

DS18B20是单总线通信,所以它的时序相对来说也比较简单,从它开始入门再适合不过了准备工具:单片机 DS18B20传感器 DS18B20 datasheet关于DS18B20的详细介绍大家可以看它的datasheet,这里只针对时序做一些介绍,参考正点原子的代码,从datasheet出发做详细的阐述,DS18B20有着严格的时序要求,稍有差错,就容易无法正常工作,接下来我们来分析它...

2019-10-04 11:05:58 2162

原创 ESP8266上传数据到MySQL数据库

思路:ESP8266通过串口助手将数据上传储存在MySQL数据库中,通过浏览器访问PHP文件来显示数据库中的数据。准备工具:ESP8266模块 普通安卓数据线 预装好的MySQL数据库 wamp集成开发环境 PHP实现的网页 串口助手第一步通过给ESP8266烧写AT指令固件第二步配置ESP8266,指令如下AT+CWMODE=3:设置工作模式(STA,AP模式)A...

2019-10-02 16:15:49 12454 4

原创 ESP8266调用心知天气API

首先我们需要一个可以调用返回天气信息的API,这里以心知天气为例,可以免费注册,虽然功能受限,但对于初学者来说,足够了心知天气api:https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c调用的时候只需要将...

2019-10-01 08:51:54 7298 1

原创 C语言实现简单的状态机

先来看一下状态机的定义:状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。有限状态机简写为FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状态有关而与输入无关,则称为Moore状态机第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机考虑状态机的...

2019-09-22 20:19:57 2011

原创 AT指令实现ESP8266和PC的相互连接

准备工具:串口调试助手,网络调试助手ESP8266作为服务器,PC作为客户端在串口助手上完成以下代码操作:AT+CWMODE=2 ##配置ESP8266模块为AP模式,开启wifi热点。AT+RST ##重启模块使AP模式生效AT+CIPMUX=1 ##启动多连接,这里强调一下,ESP8266作为服务器做多支持5个客户端的链接,id分配顺序是0-4。AT+CWS...

2019-09-22 09:19:22 1596

原创 $_GET和$_POST的用法和区别

一开始接触PHP的时候,被$_GET和$_POST这两个变量搞得很头晕,特来总结,如有补充和指正,欢迎留言基本定义:get和post是页面提交的两种方式,有着不同的应用。$_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容。$_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后php会处理post过来的全部变量...

2019-09-19 14:48:42 3531

原创 用PHP完成简易博客系统

因为项目需要简单的完成一个页面接收参数并且操作数据库的过程,在老师的指引下决定通过一个博客小项目加深自己的理解。学习路线是用一天的时间大概熟悉了HTML和PHP的语法,然后结合一些视频课程和相关博客完成目标,这里只完成了博客的基本功能,想要扩展可以自行研究。整体内容参考网易云课堂的PHP100课程的第9,10两节,因为界面没有使用CSS,所以比较丑,但功能还是全面的,主页效果图如下准备...

2019-09-19 10:49:28 4608 2

原创 结构体之函数传参问题

最近在写程序的时候,经常被结构体搞得晕头转向,尤其是关于结构体作为函数参数的情况,在此总结。以asctime函数为例,函数原型为:char *asctime(const struct tm *tm);分析可知,参数类型为输入型参数,返回一个字符串类型的数据。查阅man手册,了解struct tm的一些相关定义操作asctime时先要定义结构体变量tmNow:...

2019-05-18 09:43:14 1582

原创 main函数传参问题

在 C99 标准中,只有以下两种定义方式是正确的:int main( void )// 无参数形式{ ... return 0;}int main( int argc, char *argv[] ) // 带参数形式{ ... return 0;}大多数时候第一种写法就能完成任务,而main也完全可以不需要传参,...

2019-05-15 20:57:11 346

原创 Linux下安装交叉编译工具链

安装目的gcc经过编译后生成的可执行文件是在linux操作系统之上运行的,也就是说经过gcc编译器最后生成的一大堆机器码只有Linux操作系统认识,但是我们做ARM裸机实验时Soc上是没有linux操作系统的,所以这时候ARM裸机只认识经过ARM指令集生成的机器码。这时候我们要想让可执行文件在ARM裸机上运行就需要使用arm-linux-gcc (交叉编译工具)编译生成的可执行文件。字面理解a...

2019-05-13 23:04:43 3091

原创 typedef简单用法

1、typedef工具是一种高级数据特性,他使您能够为某一类型创建自己的名字。例如:typedef unsigned char BYTE通常我们使用醒目的大写字母定义,以提醒用户这个类型名称是一个符号缩写接下来就可以用刚刚定义的类型名BYTE来定义变量了BYTE x;2、typedef用来命名一个结构类型时,可以省去结构的标记:struct x1{ .....

2019-04-15 21:06:08 159

原创 类型限定词const、volatile和restrict的用法

一、关键字const1、const修饰变量表示这个量是常量,不能通过赋值、增量或减量运算来修改该变量的值。const修饰变量的格式为:const type name = value;下面的代码是不被允许的:const int a = 10; //把a限定为常量a = 20; //上面的声明把使a成为一个只读变量,因此这句代码是不被允许的但...

2019-04-14 20:59:27 416

原创 动态内存分配:malloc()和free()

1、通过查询gcc的man手册,我们可以看到malloc的函数原型:void *malloc(size_t size); //分配长度为size字节的内存块(1)返回值是void指针,void*表示未确定类型的指针,void *可以指向任何类型的数据,指针指向的类型是不确定的,这个指针在需要的时候可以被强制转化成其他任何一种确定类型的指针。(2)malloc只管分配内存空间,...

2019-04-14 10:51:55 171

原创 C语言static关键字用法详解

static大概是C语言关键词里最麻烦的一个,麻烦之处在于它有着两种完全不相干的用法,很容易让人一头雾水,我们一起来分析一下它的两种用法。一、修饰局部变量形成静态局部变量1.静态变量听起来很矛盾,让人摸不清头脑,像是一个不可变的变量,但实际上,“静态”指的是变量的位置是固定不变的,具有静态存储时期。静态局部变量和普通变量具有相同的代码块作用域,但它们的值不会消失,每一次调用函数,编译器都记...

2019-04-12 09:47:22 437

原创 为什么尽量少使用全局变量?

当我们的程序比较小时,是否使用全局变量本身不会造成太大的影响,但如果程序比较大,函数和变量名比较多时,就要小心全局变量带来的危害。1、全局变量是所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件,和函数的模块化编程相违背,不利于程序的修改、调试和移植。编写函数时,最好用传参返回值来和外部交换数据,不要用全局变量。但有时候又不得不使用全局变量,定义了太多的全局...

2019-04-07 09:52:35 8141 1

原创 配置vs code,实现在Windows下编译运行C/C++

vs code本身是一个代码编辑软件,并不具备编译功能,需要手动安装编译器,并配置环境变量,才能实现编译运行功能。1、离线下载安装MinGW-w64https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threa...

2018-12-17 22:41:47 686

原创 51单片机定时器应用:实现LED灯闪烁

//功能:实现LED灯闪烁#include "reg52.h" #define X 50000 //宏定义一个数,方便修改时间 sbit led_1 = P1^0; //定义P1口的第1位(即P1.0)unsigned char count; //定义全局变量,不用赋值,默认为0void init();void main (){ init(); while (1...

2018-04-25 15:09:23 14683 3

ESP8266上传数据到MySQL数据库.zip

实现ESP8266访问MySQL数据库 参考博客 https://blog.csdn.net/wangpan0330/article/details/101920930#comments

2020-04-16

stm32+esp8266上传实时温度到本地服务器.zip

stm32驱动ds18b20传感器将实时的测量数据传入本地搭建的数据库中 详见本人博客 https://blog.csdn.net/wangpan0330/article/details/102287292

2020-03-18

PHP开发简易博客(适合新手)

开发一个简易的博客系统,连接MySQL数据库,实现增删改查常用功能 详见博客 https://blog.csdn.net/wangpan0330/article/details/101015101

2020-03-18

mysql-connector-c-6.1.6(解决qt连接mysql问题).zip

针对Qt连接MySQL提示“QSqlDatabase: QMYSQL driver not loaded”问题的解决方案 解决步骤详见对应博客 https://blog.csdn.net/wangpan0330/article/details/104942097

2020-03-18

空空如也

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

TA关注的人

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