- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 C++时间戳获取及转换
C++时间戳获取及转换时间戳的获取time_t tCurrentTime = time(NULL); //秒时间戳转换,格式化string StampToTime (time_t tCurrentTime){ struct tm tm; char strTimeType[11]; tm = *localtime(&tCurrentTime); strftime(strTimeType,sizeof(strTimeType),"%Y%m%d%H",&tm); str
2021-04-09 14:44:07 511
转载 堆与栈
堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
2018-05-08 16:53:05 218
原创 A4988驱动步进电机
A4988一般用arduino来驱动,我是用STM32F103驱动的。首先推一个网页,https://www.pololu.com/product/1182,上面有比较详细和专业的说明,还有一个关于限制电流使细分更精确的视频讲解,总之,专业。然后推一个datasheet,https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver
2018-04-11 22:44:58 19391 13
原创 嵌入式linux学习笔记--存储控制器
学习笔记基于对S3C2410/S3C2440,为理论基础知识记录。存储控制器用于了解开发板内部地址空间的布局,从而掌握如何通过总线形式访问扩展的外设。总线的使用方法是嵌入式底层开发的基础,了解了总线,再根据外设的具体特性,就可以驱动外设。存储控制器提供了访问外部设备所需的信号。 如下特点: 1.共8个BANK,BANK0~BANK5可以支持外接ROM,SRAM等,BANK6~BANK7除了可以支
2018-03-28 16:42:05 368
原创 内存类接口
开发板上可以接网卡、Nor Flash,SDDRAM,这些外设都一起共用数据线与地址线,开发板可以对这些外设进行读写,那么,它的内部有什么机制来决定选中具体哪一个外设呢? CPU发出内存信号,开发板内部有内存控制器,它根据地址的范围,每个外设都有一块具体的内存范围,从而判断决定选中哪一个外设进行读写。 内存控制器是计算机系统内部控制内存并且通过内存控制器使内存与CPU之间交换数据的重要组成部
2018-03-18 18:57:07 849
原创 I2C
I2C协议 I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。它具有如下特点: ——它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。 ——在CPU与被控IC之间、IC与IC之间进行双向传送。 ——高速IIC总线一般可达400kbps以上,受总线的最大电容限制。 ——每个连接到总线的器件都
2018-03-17 17:01:12 795
原创 汇编语言基础(一)
计算机系统包括硬件和软件两大部分。 硬件(Hardware):是指构成计算机的实在的物理设备。 软件(Software):一般是指在计算机上运行的程序。 冯诺依曼设计思想的计算机由5大部件组成:控制器、运算器、存储器、输入设备和输出设备。 控制器:整个计算机的控制核心计算机内部所能识别和接受的信息方式,并把他们送入存储器中; 输出设备:将计算机处理的结果以人们能接受的或其他机器能接受的形式
2018-03-13 17:38:58 1290
原创 C/C++整理
1、执行如下代码, c 的值是:()int a=0,c=0;do{ --c; a=a-1;}while(a>0);A 0 B 1 C -1 D 死循环 解析:使用while语句应注意以下几点: 1 、 while 语句中的表达式一般是关系表达或 逻辑表达式 ,只要表达式的值为真 ( 非 0) 即可继续循环。 2 、循环体如包括有一个以上的语句,则必须用 {} 括起
2018-03-05 20:50:20 1316
原创 UART
这次主要全面总结一下UART,在学习STM32等开发板的时候,通信是比较常用的,UART是最基本的一种通信方式,后面还有IIC,SPI,DMA等,对于通信,首先要知道具体某种通信方式的特点以及用在什么之间的通信,然后最重要的是了解它的协议,每一种通信都有它自己的协议,在了解协议后,就是软件方面的配置了,最后连接硬件进行验证。 对于我自己,嵌入式学的很差,很模糊,因为我不知道为什么用某一种通
2018-03-05 17:21:58 2276
原创 定时器中断
中断与异常的区别: (1) 中断:系统停止当前正在运行的程序而转向其他服务,可能是因为优先级高的请求服务了,或者是因为人为安排中断。中断是属于正常现象。 异常:是由于软件错误而引起的。 (2) 中断是CPU所具备的功能 – 硬件 异常是软件运行过程中的一种开发过程中没有考虑到的程序错误 – 软件Cortex‐M3 在内核水平上搭载了一
2017-12-05 22:18:07 737
原创 STM32点灯
端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 端口位清除寄存器(GPIOx_BRR) (x=A..E)虽然一开始学板子就点灯了,突然发现不懂这两个寄存器的用法。用法规则:一、置GPIOD->BSRR低16位的某位为’1’,则对应的I/O端口置’1’;而置GPIOD->BSRR低16位的某位为’0’,则对应的I/O端口不变。二、置GPIOD->BSRR高16位的某位为’1’,则对
2017-11-06 22:34:45 602
原创 两相四线步进电机的驱动
说明:STM32、L298、TB6612、步进电机。 一:L298驱动步进电机 1.关于L298 原理:电机驱动模块内部有H桥的电路,包括4个三极管和1个电机,要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。 内部电路 内部电路旨在理解双h桥电路。 由图可知,L298内部两个双H桥电路分别由4个NPN三极管
2017-10-30 21:47:51 66741 12
原创 GPIO与门电路
GPIO简介 GPIO, General Purpose I/O, 通用输入输出接口, 是最简单的数字输入输出引脚 - 作为输出可以有两种状态: 0和1 - 作为输入,它接收外面输入的数字信号 GPIO功能GPIO可以用于输入、输出或其他特殊功能 通常通过寄存器配置引脚功能用来选择这些功能 - 输入: 可以通过读取某个寄存器来确定引脚电平的高低; 如读取某个按键是否按下 - 输出: 可以
2017-10-17 22:09:57 537
原创 ucosII(一)
μC/ OS-II和μC/ OS-III是抢占式,高度便携式和可扩展的实时内核。这些内核旨在便于在大量CPU架构上使用,这些内核是μC/ OS实时操作系统的关键组件。关键价值观便携。提供前所未有的易用性,μC/ OS内核提供完整的源代码和深入的文档。μC/ OS内核运行在大量处理器架构上,端口可供下载。可扩展性。μC/ OS内核允许无限制的任务和内核对象。内核的内存占用可以缩小,仅包含应用程序所需的
2017-10-09 19:21:18 312
原创 位字节
位 字节 千字节(KB) 兆字节(MB) 千兆字节(GB) 太字节(TB) 拍字节(PB)其计算公式1 字节 = 8 位 1 千字节(KB) = 1 024 字节 1 兆字节(MB) = 1 024 kb = 1 048 576 字节 1 千兆字节(GB) = 1 024 Mb = 1 073 741 824 字节 1 太字节(TB) = 1 024 Gb = 1 099 511
2017-10-05 20:23:36 298
原创 static静态变量
静态变量 类型说明符:static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中始终存在,
2017-07-19 09:56:00 595
原创 U盘存储
参考网络当前的U盘一般采用的都是FLASH芯片。 FLASH 芯片是应用非常广泛的存储材料,与之容易混淆的是RAM芯片,我们经常在有关IT的文章里面谈到这两种芯片。由于它们的工作条件与方式不一样,决定它们性能和用途也有差异。 这里简单介绍一下它们的工作原理。首先介绍一下计算机的信息是怎样储存的。计算机用的是二进制,也就是0与1。在二进制中,0与1可以组成任何数。而电脑的器件都有
2017-04-18 17:41:28 1395
转载 程序的装入和链接
转自:http://blog.csdn.net/hguisu/article/details/57130991. 地址相关概念1. 物理地址(physical address) 物理内存,真实存在的插在主板内存槽上的内存条的容量的大小. 内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可唯一标识一个存储单元,称为内存地址(或物理地址)。
2017-04-06 22:21:10 784
原创 进程调度算法
一:先来先服务和短作业(进程)优先调度算法1.先来先服务(FCFS)调度算法:是最简单的调度算法,一般用于进程和作业调度。采用该算法用于作业调度时,每次调度时从后备作业队列中选择一个或多个最先进入该队列的作业,将他们调入内存,分配资源,创建进程,放入就绪队列;进程调度时,每次调度都是从就绪队列中选择一个最先进入该队列的进程,为它分配处理机,投入运行。则该进程会一直运行到完成或发生阻塞才放弃处理
2017-04-06 22:06:58 742
转载 作业 进程 线程
转自:http://blog.csdn.net/hguisu/article/details/19108031. 基本概念线程,进程是什么?要理解两者概念,须要先了解一下操作系统的一些相关概念。任务调度:大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流
2017-04-06 20:31:12 396
转载 数论-买不到的账目数
问题描述 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入格式 两个
2017-03-28 20:13:07 248
原创 C++:面向行的类成员函数
getline()和get()由于cin使用空白(空格,制表符和换行符)来定字符串的界,从而确定字符串的结尾位置。故cin在获取字符串数组时至读取一个单词,读取该词后,cin将该字符串放到数组中,并自动在结尾添加空字符。如 New York,它只读取了New。要将整条短语而不是一个单词作为字符串输入,需要面向行而不是面向单词。istream中的类如(cin)提供了一
2017-03-22 22:13:24 226
原创 scanf()中的陷阱
关于scanf()函数中存在许多陷阱,是c语言初学者要注意的。#include main() { int a; float b; char c; printf("请输入a的值:"); scanf("%d",&a); printf("请输入b的值:"); scanf("%f",&b); printf("请输入c的值:"); scanf("%c",&c); print
2017-03-11 21:29:22 2568 1
转载 计算机组成原理
转自:http://www.cnblogs.com/kzang/archive/2012/10/29/2559004.html目录计算机概述数据总线CPU存储器输入/输出设备计算机的时标系统计算机概述计算机的基本组成:存储器: 实现记忆功能的部件用来存放计算程序及参与运算的各种数据运算器: 负责数据的算术运算和
2016-07-23 16:00:41 1205
转载 二进制 原码、反码、补码
转自:http://www.cnblogs.com/zhangziqiu/一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是
2016-07-23 15:47:42 1261
原创 C语言.冒泡选择及快排
C语言版 1:冒泡及选择排序————用指针作函数参数#include<stdio.h>#define N 10int bubble_sort(int array[],int(*compare)(int,int));int Ascending(int a,int b);void swap(int *a,int *b);int selection_sort(int array[],int(
2016-07-23 10:39:57 339
转载 FAT 工作原理
一、硬盘的物理结构: 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁
2016-07-19 10:55:38 3216
转载 国内 ACM Online Judge 列表
国内 ACM Online Judge 列表 转自:http://blog.csdn.net/liukehua123/article/details/5498261浙江大学 http://acm.zju.edu.cn 北京大学 http://acm.pku.edu.cn/JudgeOnline 天津大学 http://acm.tju.edu.cn 吉林大学 http://acm
2016-06-15 22:07:12 731
转载 KMP
从头到尾彻底理解KMP转自:http://blog.csdn.net/v_july_v/article/details/7041827作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。1. 引言 本
2016-06-06 00:58:57 397
转载 Android四大基本组件介绍与生命周期
Android四大基本组件介绍与生命周期转自:http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.htmlAndroid四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity
2016-06-05 20:17:50 240
转载 编译器的工作过程
编译器的工作过程 作者: 阮一峰日期: 2014年11月11日转自:http://www.ruanyifeng.com/blog/2014/11/compiler.html源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include
2016-06-05 19:46:11 423
转载 内存的字节对齐及结构体的sizeof计算
(1)什么是字节对齐 一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地址 % n = 0, 对于结构体而言,这个 n 取其成员中的数据类型占空间的值最大的那个。 (2)为什么要字节对齐 内存空间是按照字节来划分的,从理论上说对内存空间的访问可以从任何地址开始,但是在实际上不同架构的CPU为了提高访问内存的速度,就规定了对于某些类型的数据只能从特
2016-06-04 10:55:39 502
转载 字节对齐与结构体大小
在文档里找到一篇比较好的,放在这里便于查看。 一:解释 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据
2016-06-04 10:34:36 435
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人