自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

转载 STM32出现HardFault_Handler故障的原因及处理方法整理

STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法:1、发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R1

2012-11-11 20:54:57 2788

转载 印刷电路板的抗干扰设计原则

一 电源线布置:1、根据电流大小,尽量调宽导线布线。2、电源线、地线的走向应与资料的传递方向一致。3、在印制板的电源输入端应接上10~100μF的去耦电容。二 地线布置:1、数字地与模拟地分开。2、接地线应尽量加粗,致少能通过3倍于印制板上的允许电流,一般应达2~3mm。3、接地线应尽量构成死循环回路,这样可以减少地线电位差。三 去耦

2012-10-13 17:31:52 1342

转载 轨对轨运放(rail-to-rail)

1.所谓轨对轨(rail-to-rail)运算放大器轨对轨放大器,指的是放大器输入和输出电压摆幅非常接近或几乎等于电源电压值。2.不是所有的rail to rail 运放输入和输出都接近电源,有的只是输入有的只是输出,当然也有的输入输出都是rail to rail 的,该类运放的最大特点就是可以扩展信号的电压范围,但一般输出电流较小,在大电流的情况下并不能保证rail to rail

2012-10-13 17:30:17 1938

原创 人为什么需要学习专业课

了解专业中概念的内涵和外延,以及由这些概念、属性通过一定的逻辑方式组合起来的整个体系。学习目标就是理解概念,了解其中的逻辑连接关系,同时可以利用基本的概念、利用组合好的模块去组织新的东西

2012-09-15 13:07:06 874

原创 关于变量重复定义的理解

在c语言中,以下代码会被认为是重复定义:#include main(){    extern int i;    int i = 1;}因为extern int i会让编译器认为外部已经定义了i,以后直接用就可以 了,可以直接对i赋值,例如i = 4。但如果外部居然没有定义i,则初始化i或对i赋值时,编译就会出现未知错误——你告诉了编译器外边定义了一个i,已经有了一个房

2012-09-12 21:04:48 2762

原创 c语言中关于头文件重复包含

1、如果头文件A包含头文件C,同时头文件B也包含头文件C,而写的程序中包含了头文件A,头文件B,然后在编译的时候就会出现头文件C重复包含的错误这个错误 只要在自己写的头文件中这样写 #ifndef X //X为你的标识符,保持唯一,可以长点,比如 #ifndef _INCLUDE_XXXXXX_H_#define X//这里是你的头文件#endif上面的X可以随便取名(可以用来“

2012-09-11 19:35:33 19123 1

转载 STM32 APB1和APB2的区别

APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM

2012-09-11 14:25:27 21600 2

转载 实现STM32 Flash的读写

写flash FLASH_UnlockBank1();FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASHStatus = FLASH_ErasePage(BANK1_WRITE_START_ADDR);//BANK1_WRITE_START_ADDR 要擦除的页起始地址Addr

2012-09-11 14:24:14 1523

转载 C语言之详解#ifdef等宏

C语言之详解#ifdef等宏  这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。  条件编译命令最常见的形式为:  #ifdef 标识符  程序段1  #else  程

2012-09-10 21:18:32 919

转载 ISP和IAP两种编程方式有何区别?

细说ISP和IAP的区别但两者的操作方式,结果和应用场合有什么区别 什么是ISP: 用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统; 什么是IAP: 在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序

2012-09-10 21:03:23 1054

原创 关于在头文件中定义函数的缺点

同一个函数、变量可以在不同的c文件中根据需要有多个声明,但只能有一个定义。这就决定了如果在头文件中定义函数或变量,则该头文件只能使用一次,不能被别的c文件使用,也即限制了最好只有一个c文件,因为别的c文件已经不能再使用这些头文件;而头文件的真正用处是实现“接口”,使变量或函数供别的模块调用函数,函数类似“原子”的作用,该功能很多c文件(和头文件?)都会需要用到;而在头文件中定义,则只是起到“插入”

2012-09-10 00:03:33 10415

转载 KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251

从接触MCS-51单片机开始,我们就知道有一个叫KEIL的软件。在开发单片机时,使用的是C语言或者汇编语言,我们知道,这两种语言都不能直接灌到单片机里面,执不执行暂且不说,光是代码的体积,就足以撑破整个单片机。所以,我们需要一个软件,把C语言或者汇编语言编译生成单片机可执行的二进制代码,而且它的体积也非常的小,足够存放在单片机的存储器里面。 KEIL公司(现在是ARM公司的一个公司)的软件恰好

2012-09-09 18:46:42 1791

转载 函数fp()、数组a[i]和箭头符号->的由来

很多事物的由来都是有理由的,现在看似晦涩难解的符号token,背后都是有一段历史! 1. fp()只是一种简写方式fp()是一个函数指针,所以*fp就是该指针指向的函数,所以(*fp)()就是调用该函数的方式。 也就是 (*fp)() 和 fp() 是同一个意思; ANSI C 标准规定允许程序员将上式简写成 fp(),但是要记住,这只是一种简写方式罢了! 这样

2012-09-08 14:00:22 822

转载 STM32常见错误

一、 在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.”    解决办法: Keil MDK默认使用ULINK仿真器下载程序,在“Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。 二、 编译工程时提示如下信息: main.axf: Error: L6218E: Undefined symbol

2012-09-06 17:13:12 1979

转载 keil错误ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT

在利用Keil C51编程时,发现程序逻辑上没有错误,但在连接时却出现了错误,如下:*** ERROR L107: ADDRESS SPACE OVERFLOW    SPACE:   DATA       SEGMENT: ?DT?GMNS_3V4    LENGTH: 0014H*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT

2012-09-05 22:31:35 16910 3

转载 keil中StartUp.A51的重要性

最近要用STC单片机写个程序,但STC在KEIL的单片机库中没有,就随便找了个代替,但是刚好找到的keil没有添加StartUp.A51文件,刚开始时候写程序调程序也没什么,挺正常。但后来越来越奇怪,经常上电时出错,找了很久才发现有个变量没有初始化为0。忽然发觉是不是keil上电时没有帮我清空内存空间!一看才知道没有StartUp.A51文件。加上后,设置内部空间及外部空间地址,一切正常。足足浪费

2012-09-04 23:34:38 3284 1

转载 keil使用详解

第一章 Keil C51开发系统基本知识第一节 系统概述Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下

2012-09-04 23:29:05 26214

原创 keil编译错误解决方法

看下面一段程序:出现这样的错误信息:src\User\main.c(11): error:  #268: declaration may not appear after executable statement in block问题就出在:   “ GPIO_InitTypeDef GPIO_InitStruct;”  这句,应该使用函数之前定义GPIO_InitStru

2012-09-03 18:12:24 7433

转载 typedef_struct_用法详解和小结

1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef &

2012-08-31 17:01:03 2327

原创 c语言中=和|=的区别

在配置定时器使用了如下语句:TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 不禁疑问:这与TMOD=0x20有什么区别呢? 不都是把0x20给TMOD吗? NO。当只需要改变TMOD中的某一位时,就用 |=,如果直接用 = 赋值,会导致TMOD其它位被改变。如,TMOD=0x20就使除了位5为1,别的位都为

2012-08-30 23:22:45 3160

原创 关于STM32头文件包含出现No such file or directory和 invalid redeclaration of type name...的问题

用keil sdk编译STM32的程序时出现“.\inc\stm32f10x_conf.h(21): error:  #5: cannot open source input file "stm32f10x_type.h": No such file or directory”类似的问题,说明没有搜到此头文件,如果是用双引号 “  ” 包含的头文件,则问题肯定出在没有把此头文件放在工程文件夹内

2012-08-30 23:01:50 28040 2

原创 STM32为什么必须先配置时钟再配置GPIO

所有寄存器都需要时钟才能配置吧,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。任何MCU的任何外设都需要有时钟,8051也是如此;STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。51单片机不用配置IO时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功耗就降低不了。例如

2012-08-30 18:41:35 13790 4

转载 STM32系列微控制器开发工具与应用——keil

STM32微处理器基于ARM核,所以很多基于ARM嵌入式开发环境都可用于STM32开发平台。开发工具都可用于STM32开发。选择合适的开发环境可以加快开发进度,节省开发成本。本章将先对STM32常用的开发工具Keil MDK和IAR EWARM进行简单介绍,然后结合STM32_SK仿真评估板和STM32F103C的开发板讲解STM32片上资源使用,最后给出一个基于STM32的数据采集器的应用实例。

2012-08-30 15:10:08 3446

转载 在8位单片机中对16位INT型数据的操作

在8位单片机中没有16位数的操作指令,所有的int型数据都要通过两个字节分开操作,使用的方法不用,生成的代码也不相同,当然效率也不一样,通过指针对16位数进行操作可以得到高效的代码。    比如通过串行口接收数据,或者从串行的EEPROM中读取的数据,或者从大于8位的A/D读取的数据,由于8位单片机的数据线是8位的,高于8位的数据都要分成两个字节分别读取,然后写入到RAM中去再进行计算,或者把

2012-08-28 10:40:55 5183

转载 关于上拉电阻

上拉电阻:1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路必须加上拉电阻,才能使用。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供

2012-08-12 12:52:45 1369

转载 全局数组变量和局部数组变量的访问越界问题

有 1 小段程序如下:?123456789101112#include  int a[50]; int main(void){        inti;        for(i = 0; i                 a[i]=i;

2012-05-09 10:26:06 4757

转载 按位异或运算符^

参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=101100000^0=0,0^1=1 0异或任何数=任何数1^0=1,1^1=0 1异或任何数-任何数取反任何数异或自己=把自己置0(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻

2012-04-23 12:03:36 482

原创 编程那些事儿(持续更新中)

现在在用STC12C5A60S2单片机做32*128的LED点阵,各种纠结的问题是遇到不少的。当然,其实大都是一些常识性的错误,但是这些对于初学者而言,如果没有人指导,自己又不喜欢去看书,很难找到错误的原因。我就遇到一些,现在逐渐总结出来。//问题代码一(eeprom数据写入程序):unsigned char i; for(i=0;i<256;i++) //将数据写入eeprom中

2012-04-21 15:21:16 920

转载 EEPROM和FLASH

EEPROM 元件的类型有的 EEPROM 是包含于其他元件中,为该元件的一部份。 例如:MCU 中可能包含用来储存程式或资料的 EEPROM、数位电位器(Digital Potentiometer)内也需要 EEPROM 来储存目前的设定值。单独的 EEPROM 元件,其接口通常可分为串列式(serial)与并列式(parallel)两类。除电源线外,串列式只使用1~4只接线来传递讯号,

2012-04-20 15:41:04 1553

转载 单片机常识——结构和相关公司

概述绝大多数现在的单片机都是基于冯·诺伊曼结构的,这种结构清楚地定义了嵌入式系统所必需的四个基本部分:一个中央处理器核心,程序存储器(只读存储器或者闪存)、数据存储器(随机存储器)、一个或者更多的定时/计时器,还有用来与外围设备以及扩展资源进行通信的输入/输出端口——所有这些都被集成在单个集成电路芯片上。说单片机与通用型中央处理单元芯片不同,是因为前者一般很容易配合最小型的外部支持

2012-04-19 20:42:51 2788

转载 哈佛结构和冯·诺依曼结构的区别

哈佛结构(英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是1

2012-04-19 20:35:05 14617

转载 微处理器和微控制器的区别

这样的区别主要集中在硬件结构、应用领域和指令集特征3个方面:1)硬件结构微处理器是一个单芯片CPU,而微控制器则在一块集成电路芯片中集成了CPU和其他电路,构成了一个完整的微型计算机系统。除了CPU,微控制器还包括RAM、ROM、一个串行接口、一个并行接口,计时器和中断调度电路。这些都集成在一块集成电路上。虽然片上RAM的容量比普通微型计算机系统还要小,但是这并未限制微控制器的使用。在

2012-04-19 20:06:18 3024 2

c语言编程技术

利用c语言展示了graphic库的绘图功能,有源程序哦!很强大的学习资料!

2012-02-25

斯坦福大学教材 经典的C++学习资料!

英文版的 对学习c++很有帮助 但是偏难一点,推荐Eric Roberts的《C Programming Abstracions》

2012-02-24

从汇编语言到windows内核编程

本书要告诉你的不是全面的汇编知识或未公开的windows秘密,而是怎么从这些貌似天书的汇编代码中,一探windows底层的核心实现。在开发中出现的问题,能不能从windows自身找到答案?如果你正在这样思考,无疑本书是为你量身定做的

2011-09-27

空空如也

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

TA关注的人

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