自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 以太网学习(2)-- 网络协议简介

一、协议简介互联网的本质是数字通信,任何数字通信都离不开通信协议的制定,任何通信设备只有按照约定的、统一的方式封装和解析数据才能够实现收发双方的通信交互。互联网通信所要遵守的众多协议被统称位TCP/IP。TCP/IP是一个协议族,是一个多层协议系统,每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。。对于开发人员听到最多就是就是应用层协议,比如HTTP、FTP、MQTT等。TCP/IP是一个庞大的协议族,是众多协议的结合,这些协议按照功能可以划分为不同的层次,某些协议的

2022-03-24 21:16:05 6274

原创 CAN总线记录笔记

CAN(Controller Area Network)控制器局域网络的简称,是串行数据通信的一种高性能通信协议,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的总线之一。普遍应用于汽车计算机控制系统和嵌入式工业控制局域网中。CAN总线有以下优点:(1)网络各节点之间的数据通信实时性强CAN控制器工作于多种方式,网络上的各个节点都可根据总线访问优先权通过无损的逐位仲裁的方式竞争向总线发送数据,并且C协议没有站地址码,取而代之的是对通信数据进行编码,这可以使不同的.

2022-03-20 10:08:27 671

原创 以太网学习(1)--简介

目录一、以太网简介二、STM32MAC简介三、 LAN8720简介1)LAN8720地址设置3)LAN8720寄存器四、以太网DMA描述符学习教程以STM32F4XX硬件平台进行学习。一、以太网简介以太网是一种计算机局域网技术。是目前最广泛的局域网技术,他的传输介质可以是光纤或双绞线,简单来说,以太网就是一种在局域网中,把附近的所有设备都连接起来,使得他们之间可以进行通讯的技术。以太网的基本特征是多个站点都连接在一个总线上,所有的工作站都在不断地向总线上发出监听.

2022-03-19 22:12:27 9937 2

原创 rt-thread操作系统EC200S-CN实现短信发送流程

一、短信发送流程二、实现代码#include "shortmessage.h"#include <at.h>#include <stdio.h>#include <string.h>#include <at_device.h>#include <finsh.h>#include <at_log.h>#include <rtthread.h>#include <rtdevice.h&g.

2021-07-21 09:34:10 1446

原创 Program Size: Code= RO-data= RW-data= ZI-data=

Program Size: Code= RO-data= RW-data= ZI-data= 代表了当前程序所占内存的大小。Code:程序所占用的FLASH大小,存储在FLASH中。RO-data:代表的是只读的数据,程序定义的常量,如const型,存储在FLASH中。RW-data:存储的为有初始值要求的、可读可写的数据,存储的是已经初始化的变量,存储在FLASH中。初始化时从RW-data拷贝到SRAM中。ZI-data:存储的为未被初始化的可读写变量,存储在SRAM...

2020-07-28 16:29:47 5576

原创 AD采样出来的数值与实际值之间的关系

当刚接触AD采样时,一直对于AD采集出来的数值与实际的值之间的关系有些模糊,现在闲暇下来打算记录一下。这里以采集量为电压量来记录,当采集温度、电流等模拟量时,都是通过一个电路把模拟量转化为一个电压量输入进AD采样引脚,就不一一叙述。 AD采样,不同的芯片有不同位数的AD,一般会有8位、12、16位,不同位数的AD对应的采集出来的数值不同,精度不同。如果说ADC为8位的,则意味着有8个Bit的内存来存储AD采集出来的数值,那么寄存器中的数值最大为255,同理,12位的AD...

2020-07-09 22:36:11 26402 4

原创 FIFO

FIFO(First Input First Output)不同于堆栈(后进先出)是一种先入先出的数据缓冲器,与普通的存储器的区别是没有外部地址总线,只能顺序的写入数据,顺序的读数据,数据地址由内部的读写指针自动加1。不能像普通的存储器由地址总线来决定读取或写入某个指定地址的地址。这种特殊的存储结构一般用于两个不同的时钟域之间的数据传输,或不同的数据宽度进行传输,如下图所示。使用FIFO时...

2019-11-30 20:21:53 1412

原创 工业标准 NRZ异步串行数据传输格式

NRZ (Non-return-to-zero Code),不归零编码。在了解NRZ之前,我们先来了解一下RZ 编码(Return-to-zero Code),即归零编码,所谓的归零编码就是在进行编码时每传输完一位数据,信号电平就会返回为0电平(零电平状态),比如正电平代表逻辑1(正电平状态),负电平代表逻辑0(负电平状态),那么在信号传输的过程中就会出现3种不同的信号状态,正电平、负电平、零...

2019-01-20 11:29:14 4773

原创 STM32_USART 串口通讯详解

对51单片机有了解的都知道51单片机的串口通讯工作原理,我们单片机使用的电平TTL电平,为了使我们的的单片机与PC进行通信,就需要一个电平转换芯片,把TTL电平转换为USB电平(使用的USB接口,如果使用的DB9接口,电平转换芯片则为TTL转RS232电平芯片),然后通过对SBUF寄存器的读写操作来实现PC与MCU的通信。STM32的串口通讯原理与51相同。下面就对USART尽行具体的介绍。U...

2019-01-04 21:52:01 15216 3

原创 SysTick_系统定时器实现流水灯

参考资料《 ARM Cortex™-M4F 技术参考手册》-4.5 章节 SysTick Timer(STK)SysTick(系统滴答定时器),本质上就是一个内嵌在NVIC中的一个定时器,属于内核中的一个外设,是一个24位的向下递减的计数器,计数器每1/SYSCLK就减1,当寄存器的值减到0的时就会产生一次(硬件上的)中断,也有叫做滴答中断。主要的目的1、用来产生精确的延时。2、一般用于操作系...

2018-12-10 22:40:52 4151

原创 STM32_EXTI外部中断学习笔记

参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。EXTI( External interrupt /evet controller)之前接触过51单片机的都了解到51单片机有两个外部中断 ,分别为外部中断0、1。用来实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后....

2018-11-25 23:35:48 6002 1

原创 STM32中断及NVIC概述

         参考资料《STM32F4xx 中文参考手册》第十章-中断和事件、《 ARM Cortex™-M4F 技术参考手册》-4.3 章节:NVIC 和 4.4章节:SCB—4.4.5的 AIRCR。           对51单片机有一定了解的都知道51单片机有5个中断源,2个优先级,通过对IP这个寄存器赋值来进行中断优先级的处理而STM32的中断非常强大,每个外设都可以产生中断,那...

2018-11-14 22:46:21 3436

原创 STM32系统时钟配置及时钟树

参考资料:《 STM32F4xx 中文参考手册》 RCC 章节。STM32时钟可大致分为系统时钟和其它时钟两大类,总共包含5个时钟源 HSI(High Speed Internal Clock)、HSE(High Speed External Clock)、LSI(low Speed Internal Clock)、LSE(Low Speed External Clock )、PLL(Phas...

2018-11-05 20:47:38 3729

原创 STM32 的位带操作

位操作就是可以单独的对一个比特位进行读和写,这个在51单片机中非常常见。51单片机中通过关键字sbit来实现位定义,STM32中则是通过访问位带别名区的地址来实现对某一位的操作。例如51单片机中可以实现以下操作#define LED_ON 0sbit LED = P2^0;LED = LED_ON;而现在STM32的位段、位带别名区就为了实现这样的功能。STM32针对SRM和外设...

2018-10-25 23:49:27 1461

原创 stm32实现GPIO输入按键检测

1、硬件设计按键机械触点断开、闭合时,由于按键触点的弹性作用,按键开关不会马上稳定接通或一下就断开,使用按键时就会产生下图中的带纹波信号,需要软件消抖处理滤波由于用软件消抖处理滤波不方便输入检测,所以提出了如下带有硬件消抖的电路。从按键的原理图可知,当按键没有被按下时,GPIO引脚通过一个下拉电阻R64使引脚处于低电平状态,当按键被按下时,按键所在的电路导通,VCC通过一个限流...

2018-10-24 22:46:53 16896 2

原创 stm32f4固件库函数点亮LED灯

我采用的实验板硬件原理图如下这些LED灯的阴极都是与STM32的GPIO的引脚相连接,我们只需要控制对应的引脚输出低电平,即可点亮LED灯,其中彩灯的阳极连接到的一个电路图符号“口口”,它表示引出排针,即此处本身断开,须通过跳线帽连接排针,把电源跟彩灯的阳极连起来,才可以进行操作。固件库工程配置如下标准的固件库函数工程模板在编写应用程序的过程中,要考虑更改硬件环境的情况,...

2018-10-14 12:02:11 8575 1

原创 如何新建stm32固件库工程

1、首先先新建一个工程文件夹,在它之下再新建7个文件夹DOC用于存放程序说明文件Listing存放的是编译器编译时候产生的c/汇编/链接的列表清单Output存放的是编译产生的调试信息、hex文件、预览信息、封装库等Project用来存放工程CMSIS 和 STM32F4xx_StdPeriph_Driver 用来存放的是固件库文件USER是用户编写的驱动文件2、新...

2018-10-14 12:00:54 1443

原创 c语言中宏定义#define

预处理器指令#define和其他预处理器指令一样,都是从#开始运行,到第一个换行符结束为止,也就是说预处理器指令的长度仅限于一个逻辑行(C语言中以 ; 作为语句的结束,不以行为单位结束,当一行的内容太长不方便卸载一行时可使用反斜杠"\"作为继续符,分为多行书写) ,在预处理开始前编译器会把多行物理行处理为一行逻辑行。#define LED_RGBOFF   LED_R_OFF;\ ...

2018-10-09 00:19:34 1384 2

原创 关于keil编译报sct(7): error: L6236E: No section matches selector - no section to be FIRST/LA处理方法

当keil 编译出现sct(7): error: L6236E: No section matches selector - no section to be FIRST/LA是由于没有加启动文件,双击左边工程框的文件夹,添加Startup开头的.s文件即可。(以stm32f429为例) ...

2018-09-28 23:27:28 55255 13

原创 关于keil 编译出现 warning: #1295-D: Deprecated declaration /函数/ - give arg types

在声明函数时,如果该函数没有参数就要在括号里加“void”例如函数定义void LED_GPIO_Init(){        GPIO_InitTypeDef  GPIO_Init_Struct;        GPIO_Init_Struct.GPIO_Pin    = LED_GPIO_PIN;        GPIO_Init_Struct.GPIO_Mode   = ...

2018-09-26 22:47:19 30904 5

原创 C语言中关键字 volatile

1、volatile      volatile关键字在c语言中用于表示变量是易变的,告诉编译器不缓存该变量,也就是每次访问改变量都要去内存访问,不会访问该变量在缓存中的副本,也就是CPU的一级二级三级等等缓存,改变的时候也是直接写回内存的,不会放到缓存里,一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变...

2018-09-22 16:26:22 946

原创 库函数开发与寄存器开发

在以前 8 位机时代的程序开发中,一般直接配置芯片的寄存器,控制芯片的工作方式,如中断,定时器等。配置的时候,常常要查阅寄存器表,看用到哪些配置位,为了配置某功能,该置 1还是置 0。这些都是很琐碎的、机械的工作,因为 8位机的软件相对来说较简单,而且资源很有限,所以可以直接配置寄存器的方式来开发。对于 STM32,因为外设资源丰富,带来的必然是寄存器的数量和复杂度的增加,这时直接配置寄存器方...

2018-09-22 14:47:05 6342

原创 STM32F429IGT6寄存器映射点亮LED灯

 原理图如下(以PH10引脚的连接的LED灯为例)我们只需要给PH10引脚一个低电平,那么LED即可点亮。内部GPIO原理图如图所示,红色箭头即为GPIO输出方向,只要给置位/复位寄存器写数据数据就会传到输出数据寄存器(或者直接给输出数据寄存器赋值),经过推挽输出电路然后输出高低电平。首先配置与PH10引脚有关的寄存器(寄存器映射)通过查阅stm43f4的参考手册,相关...

2018-09-20 00:25:31 1226

原创 关于keil5警告last line of file ends without a newline解决办法

在keil进行编译的过程中总会出现 warning:  #1-D: last line of file ends without a newline解决的办法是:双击编译结果的警告,会跳到程序警告出现地方,然后将光标移至程序的最后的位置,按住delete键,直至确认后面没有空格,然后点击回车,光标会移至下一行,要确保光标处在空白行的最前端,然后编译警告即可消失。...

2018-09-15 16:16:38 18390

原创 关于Keil5编译成功但是会有红叉的问题

很多人在用keil5时编译项目无错误无警告但是程序右边会出现红色叉号,如下图所示这是因为keil新增的同步查错功能,想要关闭的方法是: Edit - Configurations - Text Completion- Dynamic Syntax Checking然后把使能关掉就可以了。 ...

2018-09-15 16:05:54 9798 3

原创 FLASH、EEPROM、ROM、RAM、DRAM、SRAM简介

Flash memory 指的是“闪存”,所谓“闪存”,它也是一种非易失性的内存,属于EEPROM 的改进产品。它的最大特点是必须按块(Block)擦除(每个区块的大小不定,不同厂家的产品 有不同的规格), 而EEPROM 则可以一次只擦除一个字节(Byte)。目前“闪存”被广泛用在 PC 机的主板上,用来保存BIOS 程序,便于进行程序的升级。其另外一大应用领域是用来作 为硬盘的替代品,具有抗震...

2018-09-12 23:32:47 1473

原创 STM32仿真器下载配置

我所使用的仿真器为 Fire-Debugger,支持ARM公司的 CMSIS-DAP 标准如下图所示。我们把仿真器与开发板连接和电脑连接,然后给开发板上电,接下就可以通过keil软件来给开发板烧写程序。连接示意图如下图所示。连接好之后,打开keil软件,点击红色方框的按钮。接下来点击Debug,选择CMSIS-DAP Debugger。然后点击Utilies,选择默...

2018-09-11 22:59:35 5006 2

原创 I2C通信

I2C总线是PHLIPS公司推出的一种串行总线,它只有两根双向信号线。一根是数据线SDA(serial data I/o),另一根是时钟总线SCL(serial clock)。如下图所示,I2C总线上可以挂接多个器件,而每个器件都有唯一的地址,这样可以标识通信目标。数据的通信方式采用主从方式,主机负责主动联系从机,而从机则被动回应数据。I2C总线的搭建因为任何带有I2C硬件接口...

2018-08-18 19:05:37 2998 2

转载 开漏输出、推挽输出

摘自:http://www.cnblogs.com/ne-zha/p/7422302.html1、开漏输出开漏输出只能输出低电平,类似于三极管的集电极,要输出高电平需要上拉电阻才能输出我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为...

2018-08-13 21:22:19 49323 4

原创 51单片机串口通讯UART

1、串行通信的的基本知识在实际的工业生产,或者生活中,计算机的CPU要与外部的设备之间进行信息的交流,数据的交换,所有的这些信息交换均可称为通信。通信的方式有两种,分别为串行通信和并行通信。我们通常根据实际信息传输的距离还决定采用哪种通信方式。并行通信:并行通信是指数据的各位同时进行传送(发送或者接收)的通信方式。其优点是传送速度快,缺点是数据有多少位,就需要有多少根传送线。串...

2018-08-05 20:33:39 34204 8

原创 89c51按键计数器

键盘分编码键盘和非编码键盘。键盘上闭合建的识别有专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘,而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的,非编码键盘分为:独立键盘和矩阵式键盘。我所用的独立键盘的硬件连接如下图所示当S1被按下时,S1两端就会导通,由于P35与GND相连,所以就会变成低电平,则会检测到...

2018-07-27 20:23:33 10245 2

原创 51单片机数字钟

51单片机数码管硬件接口如下图所示四个共阳极数码管,P20~P23是通过四个PNP三极管来控制数码管的位选,当给对应位选端低电平时,三极管导通,即对应位的数码管工作,P0是控制数码管的 段选(四个数码管并联)。我以前的博客里有写到过数码管的工作原理,这里就不细讲。由于我的开发板只有四位数码管,所以我只显示了分和秒,数字钟的具体操作如下# include &lt;reg52.h&gt...

2018-07-24 22:12:08 6782 24

原创 51单片机 定时器及其应用

89c51单片机内部有两个16位的定时/计数器,即定时器T0和定时器T1,单片机的定时功能其实就是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的应用涉及到中断方面的知识,可以先了解中断的概念再来看定时器如,一个16位的定时器,它所能计数的范围是0~65535,如果单片机采用的是12M的晶振,那么定时器单次最长的时间为65535*((1/12)*12),因为一个一...

2018-07-17 20:38:23 24374 1

原创 51单片机数码管的静态与动态显示

操作数码管的显示其实与操作led灯的操作本质上差不多,可以把一个数码管当做操作8段led灯来让它显示我们所预想的效果,如下图所示。假如我想让一个数码管显示1,把我只需把B、C两个LED灯点亮就可以了,数码管的a~dp(数码管的点)对应字节的1~8位,假设为共阳极接法,即为1111 1001对应十六进制的F9数码管的显示分为静态显示和动态显示数码管的静态显示其实就是一直给数码管的特定...

2018-07-15 22:36:55 44927 6

原创 89c51单片机流水灯操作

要用51单片机实现流水灯操作我想是每个初学者学习单片机,了解嵌入式的第一个动手的小实验吧,今天在重新学习的时候遇到了一点小问题,在这里和大家分享一下。要想控制流水灯操作其实是用单片机给每个二极管高低电平来控制灯的亮与不亮。我用的51单片机学习板的二极管的硬件原理图如下图所示板子上电之后,J2是跳线帽,一般是连接上的,再过来是LED1~LED8共8个发光二极管,然后经过电阻连接到51...

2018-07-14 17:27:37 29094 1

原创 c语言 赋值过程中的类型转换

如果赋值运算符两侧的类型一样,则直接进行赋值,当赋值运算符两侧的类型不一样时,在赋值时要进行类型转换,转换是由系统自动进行进行的,规则如下:(一)把浮点型数据赋值给整型变量时,要先进行取整操作(去掉小数部分),然后再赋值给整型变量。假设a为整型变量,执行a = 4.7后,a = 4 。(二)将整型数据赋值给浮点型变量时,会将整型数据以浮点数的形式赋值给变量。假设b为单/双精度实数,执行 b = 4...

2018-06-24 10:56:05 6394

原创 89c51中断系统及中断控制

现代的计算机都具有实时处理功能,当外界有突发事件时,cpu能够及时的做出处理,这就是靠中断来实现的。当CPU正在处理某一命令时,这时外部发生了某一事件(如电平的变化,或者定时器/计数器溢出时)请求CPU去处理该事件,于是CPU停止处理当前的事件,并保存当前停止时的地址,转去处理所发生的事件,处理完毕后,CPU返回原先保存的停止时的地址,继续处理原先的事件,这样的过程被称为中断。上图即为...

2018-06-23 23:29:10 19445

原创 自增,自减运算符,求余运算符,复合的赋值运算符

1、自增、自减运算符作用是使变量的值加1或者减1,例如:++i,--i (自增,自减运算符在变量之前的,先使i的值加(减)1)i++,i--(自增,自减运算符在变量之后的,先使用变量i,之后再使i的值加(减)1)例如int i = 4;一、j = ++i; (自增运算符在变量i之前,先执行加1,然后赋值给 j , j = i = 5,)二、j = i++;(自增运算符在变量之后,先赋值,后加1, ...

2018-06-23 12:02:40 1332

原创 复位电路

89c51单片机与其他微处理器一样,在启动时都需要复位,使CPU及系统各部件处于确定的初始状态,并从初态开始工作。复位操作有上电自动复位和按键手动复位两种方式。1、上电自动复位上电自动复位是在加电瞬间电容通过充电来实现的,如上图所示,在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位 。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复...

2018-06-21 21:41:05 12335

原创 89c51 CPU时序

         89C51系列单片机和其他MCU一样,都是从Flash Rom中取指令和执行指令过程中的各种微操作,都是按着一定的节奏进行的。这是因为89c51单片机内有一个节奏发生器,即片内的震荡脉冲电路。         89c51的芯片内部有一个高增益的反相放大器,用于构成震荡器。反相放大器的输入端是XTAL1,输出端是XTAL2,两段之间接一个石英晶体和两个电容就构成了稳定的自激振荡...

2018-05-29 22:25:07 2717

stm32f429igt6自己写寄存器映射点亮led灯

stm32f429igt6的芯片自己写库函数来实现点亮led的操作。

2018-09-29

空空如也

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

TA关注的人

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