![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机
文章平均质量分 86
小帅哥gaoyi
上帝保佑,大家晚安!https://github.com/gaoyi221119
展开
-
reg51 reg52区别
对于STC的任何一个系列,你都可以选择AT89S52系列。STC系列兼容51系列的单片机,也就是说,51系列的单片机有的功能STC一般都有。在书写程序的时候,编译器的检错,是不会具体针对你新建工作程时所选某一块芯片来检错的。虽STC系列兼容AT89S52的功能。但,有也不同之处,因为现在STC系列的大部分单片机都对其功能进行了增强。就连STC系列很普通的单片机都扩展了外部RAM使其数据存储器达到了1原创 2017-08-21 10:35:08 · 9157 阅读 · 0 评论 -
一个字等于多少字节?
在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。现代计算机的字长通常为16、32、64位。 结合以上两句,我觉得一个字占多少字节并不是那么绝对的,要看你是哪个处理器(处理器的位数决定了能够处理一条指令的长度)。以前我看书上也是说一个字就是两个字节,这是因为我们之前接触的8086处理器都是16位的。最近看ARM的处理器,因为是32位处理器,所以这里的一个字就表示4个字节,原创 2017-09-14 22:53:32 · 35458 阅读 · 1 评论 -
字节对齐的规则总结
一、什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始原创 2017-09-15 11:11:44 · 17535 阅读 · 3 评论 -
软中断和硬中断区别
软中断: 1、编程异常通常叫做软中断; 2、软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式; 3、 中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能; 4、软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。硬中断: 1、 硬中断是由外部事件引起的因此具有随机性和突发原创 2017-09-16 21:09:42 · 1513 阅读 · 0 评论 -
TTL电平与RS232电平的区别
51系列单片机接口是TTL电平,其中就有串口,如 Tx Rx 等。 电脑自带串口是标准 RS232电平。51系列单片机 串口 ,一般要用 max232电平转换后才能与电脑自带串口 相连。RS-232 RS-232 对电器特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD上: 逻辑1(MARK)=-3V~-15V 逻辑0(SPACE)=+3~+15V 在RTS原创 2017-09-08 18:45:42 · 2190 阅读 · 0 评论 -
嵌入式系统中引导程序的实现(上电到main)
在嵌入式系统的开发过程中,技术难点主要在于系统引导程序的编写,为此本文将详细论述在ARM7基础上开发嵌入式系统时引导程序的实现。引导加载程序是系统加电后运行的第一段软件代码。当一个微处理器最初启动时,他首先执行预定地址处的指令。通常这个位置是只读内存,其中存放着系统初始化或引导程序。在PC系统中,引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的操作系统BootLoader(比如,原创 2017-09-08 21:05:06 · 2695 阅读 · 0 评论 -
c语言程序总是从main函数开始执行吗?
答案是否定的!为什么呢?一、在Linux C中,使用attribute关键字,声明constructor和destructor,可以自定义程序入口点,不一定是在main函数开始执行。#include <stdio.h> __attribute((constructor)) void before_main() { printf("%s/n",__FUNCTION__); }原创 2017-09-08 21:33:06 · 29335 阅读 · 0 评论 -
stm32独立看门狗和窗口看门狗的区别和联系
STM32有2个看门狗:独立看门狗和窗口看门狗。独立看门狗IWDG:独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器,主要用于监视硬件错误。窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同。如果系统时钟不走了,这个狗也就失去了作用了,主要用于监视软件错误。简单的讲,看门狗就是检测系统故障的,如果因为系统故障而没有及时喂狗,则引发复位重启。对于一般的独立看门狗,程序可以在它产生原创 2017-09-11 18:58:28 · 1156 阅读 · 0 评论 -
单片机A/D采样的原理
在A/D转换器中,因为输入的模拟信号在时间上式连续的,而输出的数字信号代码是离散的。所以A/D转换器在进行转换时,必须在一系列选定的瞬间(时间轴上的一些规定点上)对输入的模拟信号采样保持,然后再把这些采样值转换为数字量。因此,一般的A/D转换过程是通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压采样保持,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形原创 2017-09-11 20:55:41 · 41951 阅读 · 0 评论 -
IIC、SPI、UART的区别与联系
很多新手都一直不明白IIC、SPI、UART之间的差异,这里我说说我的理解。一般设备和设备之间的通讯,无非就是发送数据和接收数据,问题就在这里,不考虑两条电源线的情况下要多少根线来收发数据?这里Motorola公司就提出一种方案:1.SPI–Serial Peripheral Interface串行外围设备接口,是一种三线同步总线,即由1根发送线+1根接收线+1根时钟线(数据传送时序控制线)+1根C原创 2017-09-06 22:23:40 · 1690 阅读 · 0 评论 -
ARM嵌入式系统教程的外部存储器接口实验1
对于ARM嵌入式系统教程的外部存储器接口实验的半字(16位)数据编程的解释: “ //半字(16位)数据编程 uint8 WordProgram(uint32 Addr,uint16 Data){ volatile uint16 *ip; uint16 temp1,temp2;ip=GetAddr(0x5555); //转换地址0x5555 ip[0]=0xaaaa;原创 2017-09-06 19:27:46 · 953 阅读 · 0 评论 -
UC/Gui和EmWin的区别:同与不同
UC/Gui和EmWin的简介在国内做嵌入式系统的,开始入门OS的时候,大家应该都会选uC/OS,为什么?因为代码开源且资料众多嘛。由于UC/OS的原因大家也一定接触了UC/GUI的嵌入式图形软件库。其实uC/Gui的核心代码并不是Micrium公司开发的,而是Segger公司为Micrium公司定制的图形软件库,当然也是基于Segger公司的emwin图形软件库开发的。所有说UC/GUI其实是em原创 2017-08-04 14:41:38 · 3366 阅读 · 0 评论 -
gcvt字符串转换函数应用实例
原型:char *gcvt(double value, int ndigit, char *buf); 相关函数 ecvt,fcvt,sprintf 头文件:stdlib.h 功能:将浮点型数转换为字符串,取四舍五入,同时返回一个指向字符串的存储位置的指针的函数 说明:gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的符号字节)并存储该字符串在buffer中。该buffer应足原创 2017-08-14 10:41:07 · 367 阅读 · 0 评论 -
STM32的复用时钟的开启和重映射功能
1、IO口的复用最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO,ENABLE);当初是参考开发的例子写的,一直对GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,原创 2017-05-14 13:28:48 · 2433 阅读 · 2 评论 -
各种存储器的区别
RAM / ROM 存储器 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM 有两大类: 1) 静态RAM(Static RAM / SRAM),SRAM速度非常快,是目原创 2017-08-21 15:19:17 · 3246 阅读 · 0 评论 -
ARM编译器的扩展关键字
1.__irq 使用__irq定义中断处理函数,当中断发生时,所有需要被保护的寄存器,编译器都会自动保存。同时,在中断处理完成后,把lr-4的值装载到PC,把SPSR的值复制到CPSR来实现返回。所以用__irq,不需要考虑现场的保护。 __irq void IRQHandler(void){….. } 两个限制: 1.函数不能有参数和返回值 2.不能用作可重入的中断处理函数定义,因为它不原创 2017-09-03 22:44:05 · 14043 阅读 · 0 评论 -
C51编译器的扩展C语言关键字
bit 位标量声明声明一个位标量或位类型的函数 sbit 位标量声明声明一个可位寻址变量 Sfr 特殊功能寄存器声明声明一个特殊功能寄存器 Sfr16 特殊功能寄存器声明声明一个16位的特殊功能寄存器 data 存储器类型说明直接寻址的内部数据存储器 idata 存储器类型说明间接寻址的内部数据存储器 pdata 存储器类型说明分页寻址的外部数据存储器 xdata 存储器原创 2017-09-03 22:53:45 · 13403 阅读 · 0 评论 -
CPU对外设IO端口物理地址的编程方式
几乎每一种外设都是通过读写设备上的寄存器来进行的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。 有些体系结构的CPU(如PowerPC原创 2017-09-04 13:05:08 · 3501 阅读 · 1 评论 -
Keil-arm警告 warning: : statement is unreachable
解析: “statement is unreachable”这句一般是说编译器认为程序执行不到这里。 因为本人运行程序的时候,再向前有一个While(1)循环, 理论上说除非你里面有设置break,否则会一直循环下去。 编译器认为在while循环这里就会一直循环,永远跳不出来, 那么下面这一句指令也就永远无法执行到了。 这种警告一般不会影响程序的运行。原创 2017-09-04 14:51:05 · 3482 阅读 · 0 评论 -
8、16、32-BIT系列单片机区别与特点
一、8位单片机8031/8051/8751是Intel公司早期的产品1、8031的特点8031片内不带程序存储器ROM,使用时用户需外接程序存储器和一片逻辑电路373,外接的程序存储器多为EPROM的2764系列。用户若想对写入到EPROM中的程序进行修改,必须先用一种特殊的紫外线灯将其照射擦除,之后再可写入。写入到外接程序存储器的程序代码没有什么保密性可言。2、8051的特点8051片内有4k R原创 2017-10-23 18:52:32 · 4019 阅读 · 0 评论