- 博客(20)
- 资源 (12)
- 收藏
- 关注
原创 常见的预处理指令说明
常见的预处理指令如下:预定义指令名称含义#define宏定义#undef撤销已经定义过的宏名#include使编译程序将另一源文件嵌入到另一源文件中#if条件预编译#else条件预编译的else分支#elif条件预编译的else if分支#endif结束条件预编译执行#ifdef如果有定义XXX宏#ifndef如果没有定义XX宏#line改变当前行数和文件名称#error编译错误#pragma可以
2020-09-24 00:36:46
489
1
原创 #define宏与枚举以及typedef关键字的区别
#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。一般在调试器里面,可以调试枚举常量,但是不能调试宏常量枚举可以一次定义大量相关的常量,但是#define宏一次只能定义一个...
2020-09-23 23:59:24
754
原创 大端小端模式介绍
大端小端基本概念计算机存储以字节为单位,除开少数可以支持位寻址的单片机(8051,8052等)以外,CPU最小的访存单元为8个比特位即一个字节,那么对于超过一个字节的数据类型在内存中的存储有以下两种模式。大端模式(Big_endian): 字节数据的高字节存储在低地址中,而字节数据的低字节存储在高地址中。小端模式(little_endian):字节数据的高字节存储在高地址中,而字节数据的低地址存储在低地址中。以int数据类型举例。假设int在内存中的大小为两个字节,即占16位,有如下代码:in
2020-09-21 01:40:28
1418
原创 最基本的关键字-sizeof
首先sizeof是一个关键字,不是函数,表示计算变量所占内存空间大小。sizeof的计算可以不带括号,但不带括号情况下不能计算数据类型, 比如声明变量int i; 那么sizeof i 是正确的写法,但是sizeof int是错误的写法。可以加括号将其改写成sizeof(int)进行计算。sizeof的返回值为无符号的整型,即unsigned int,有可能在不同系统平台下运行的代码,需要考虑符号位以及位宽的因素,避免造成数据异常。...
2020-09-21 00:42:27
484
原创 winform sqlite基本操作
引用sqlite数据库winform要使用sqlite数据库,必须引用System.Data.SQLite.dll文件,添加方法:右键工程,添加,引用,浏览,选择System.Data.SQLite.dll文件,然后在代码里面便可以使用以下命名空间:using System.Data.SQLite;using System.Data.Sql;using System.Data.SqlCli...
2019-06-22 18:10:25
3341
原创 系统时间与格林威治时间
/*计算当前时间到格林威治时间总共过了多少秒,以当前北京地区东八区时间为准*/unsigned long mktime_second(const unsigned int year0, const unsigned int mon0, const unsigned int day, const unsigned int hour, const unsigned int...
2019-01-14 10:14:13
1834
原创 Makefile 简单编译规则
makefile的规则target ... : prerequisites ... command ... ...target被称为目标文件,prerequisites 表示需要生成target的文件列表。command也就是make要执行的命令。即,target中包含的一个或多个目标文件依赖于prerequisites中的文件,其规则定义在comman中。在默认的情况下,输入mak...
2018-12-15 17:14:14
2023
1
原创 Linux多进程 --无名管道
无名管道的创建函数pipe函数原型:int pipe(int pipefd[2]);头文件:#include <fcntl.h> #include <unistd.h>输入参数: pipefd: int型数组,长度为2,用于创建无名管道后存放对无名管道进行读写的文件描述符。返回值:创建无名管道的结果,0表示成功,-1失败函数说明调用pipe函数创建一个无名管...
2018-11-29 00:40:21
318
原创 Linux多进程--wait/waitpid
等待子进程状态改变函数wait函数原型:pid_t wait(int *status);头文件:#include &amp;amp;lt;sys/types.h&amp;amp;gt; #include &amp;amp;lt;sys/wait.h&amp;amp;gt;输入参数: status: int型指针,用于获取子进程状态发生改变时,返回的状态值。返回值:pid_t是一个宏定义,其实质是int被定义在#include
2018-11-28 00:24:12
894
原创 Linux多进程--创建进程(fork/exit)
创建进程fork()函数原型:Pid_t fork(void);头文件:#include &amp;amp;amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;amp;amp;lt;sys/types.h&amp;amp;amp;amp;amp;amp;gt;参数:无参数返回值:pid_t pid_t是一个宏定义,其
2018-11-26 15:18:28
1011
原创 STM8 如何自制BootLoader并实现在线升级
STM8自制Bootloader程序,可实现串口进行软件升级,利用该部分原理,可远程进行代码的修改和功能的更新
2017-09-30 14:49:24
10862
9
原创 STM8 时钟源切换
STM8时钟源:1、1~24MHz的高速外部晶体振荡器(HSE),即外部晶振 2、1~24MHz的高速外部时钟信号(HSE), 3、16MHz的高速内部RC振荡器(HSI) 4、128KHz的低速内部RC振荡器(LSI) 默认时钟源:由上述时钟框图,可以分析得知,16MHz HSI RC振荡器经过一个分频器,将时钟信号输出到主时钟选择器。单片机上电后默认该分频器的值为8分频,即单片机上电主时
2017-02-17 16:36:33
4956
原创 STM8 UART中断发,中断收
STM8 UART 初始化配置STM8 UART的几个常用寄存器分别为: UART1_CR1:控制寄存器1 UART1_CR3:控制寄存器3 UART1_BRR2:波特率寄存器2 UART1_BRR1:波特率寄存器1利用控制寄存器1,2,3可以配置UART数据传输的具体帧格式,这里将UART配置为1个起始位,8个数据位,1个停止位,无校验位。具体操作代码如下: UART1_CR1=
2017-01-23 16:46:31
7809
原创 MP4文件数据格式
MP4文件结构MP4文件中所有数据都封装在Box中 (QuickTime中为atom),即MP4是由若干个Box组成的,每个Box还可以包含其他的Box这样的Box称为container box.一个MP4文件首先会有且只有一个ftyp类型的box,作为MP4格式的的标志并包含关于文件的一些信息;之后会有且只有一个MOOV类型的Box它是一种container box,子box包含了媒体的metad
2016-12-17 10:55:01
1597
原创 火星坐标与地球坐标的转换,以及地球上两点之间的距离计算
火星坐标与地球坐标的转换,以及地球上两点之间的距离计算地球坐标就是我们通过GPS获得的GPS坐标,而我们所谓的火星坐标,就是经过国家测绘局进行加密后的坐标(WGS-84 ),而这个火星坐标只在国内有效。下面这个函数用来判断坐标是否属于中国境内,但是这个坐标判断不是太准确,只是大概判断。 bool outOfChina(double lat, double lon){
2016-11-03 20:59:14
5139
原创 GMap 鼠标拖拽与单击冲突问题以及按下鼠标移动Marker
GMap 鼠标拖拽与单击冲突问题以及按下鼠标移动Marker好久没有写博客啦,之前写了三篇关于GMap的,还是想继续写下去,在之前的基础之上本篇博客就解决两个问题吧:我们在使用鼠标拖拽地图时,拖拽完成后,抬起鼠标GMap控件会触发鼠标点击事件, 原本博主以为GMap会提供相应的接口去让我们禁止触发鼠标单击事件,但是博主貌似没有找到GMap有提供这个接口,所以这个只能是我们手动来完成了。首先利用G
2016-11-01 23:12:11
4490
原创 STM32环境搭建,建立工程及程序烧录
开发环境的搭建:STM32开发环境使用Keil MDK进行,今天香农就说说怎么使用MDK建立一个工程首先应该下载到MDK官网:http://www.keil.com/arm/mdk.asp 下载最新版的MDK安装包,进入MDK官网,点击download按钮 跳转到下载界面,填入必要的信息: 然后在页面下方点击提交按钮: 如果填写的信息,符合要求,在本页面将会显示下载连接:
2016-08-01 20:26:40
22307
1
原创 GMap 初步使用
香农上次写了有关GMap开源项目源码的编译方法,这次就讲讲怎么使用GMap进行简单操作吧。首先香农建立了一个winform工程,命名为GMapTest1并在工程中添加了对GMap的引用(GMap.NET.Core.dll和GMap.NET.WindowsForms.dll) 添加完成之后将GMapControl控件拖拽到Form面板上,默认GMapControl名称为gMapControl1(
2016-08-01 15:49:25
15998
5
原创 GMAP 开源代码如何编译
GMAP 开源代码如何编译在公司研究了好久的GMAP,一直想分享一下心得,筹划了好久,今天终于开始写了。有不对的地方还请海涵。由于小编是使用winform进行GMAP开发的,所以这里只赘述winform如何进行GMAP开源代码的编译。首先需要下载GMAP的官方源码,下载地址可以从GMap官网下载,也可以去网上找,小编这里提供一个链接: http://download.youkuaiyun.com/downlo
2016-07-30 17:27:33
4180
Bootloader_App_DownloadTools
2017-09-30
Gmap鼠标拖拽Marker
2016-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人