自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

零界

隔行如隔山,转行要乘早。

  • 博客(12)
  • 收藏
  • 关注

原创 [蜂鸣器不简单]单片机中蜂鸣器的多种运用(长响,短响,多次响)

在一般的单片机教材中,对蜂鸣器的使用都有简单的说明。这里就详细展开不同蜂鸣器,不同芯片的蜂鸣器写法了。不过,在开发项目的时候发现,教材中的蜂鸣器使用存在很大的局限。最大的局限就是不能使用delay这种忙循环函数,这种函数不仅对CPU资源有极大浪费,而且会延后其他函数的运行,如果有些时间相关的函数,会造成时间错乱。此外在蜂鸣器响的过程中,不能进行除了中断之外的任何操作。严格来说,

2015-07-15 14:02:42 17057 10

原创 第一个STM8项目的记录

说明我的第一个项目是stm8。 显示部分是点阵加数码管,通过串口控制下位机变频器的运行。虽然看起来很简单,但是项目复杂度超过我以前开发板上的所有项目,因此碰到了很多前所未有的问题。在此记录一笔。 注,这是本人第一个项目的记录,不保证科学与正确1,misplaced local declaration错误变量必须在函数的最开始处一口气全部声明或者定义掉 这其实是说明cosmic不支持c99的原因

2015-07-25 12:19:07 5165

原创 [STVD可能有bug]向量文件中变量数值不能超过36767(即不能超过2字节)

我刚接触stm8s时候,发现有两款编辑器,STVD和IAR,但两款都有些问题,不过最后我还是选择了IAR,因为STVD问题更多,而且还有些致命缺陷。而下面说的是我发现的一个bug。但是无法解决。STVD新建一个工程后,会有两个文件main.c和stm8_interrupt_vector.c。后者是中断向量文件。但是,如果你在这个文件中定义函数的话……比如下面的函数,其他工作

2015-03-26 22:10:47 2432 1

原创 IAR for stm8使用标准固件库的方法以及注意事项

标准库其实挺方便的。有了一个模板之后,如果改参数,根本就不需要再去查手册,重新定义寄存器值了。第一部分,stm8标准库介绍。stm8的标准库名称代码是stsw-stm8069,根据这个代码就可以到st的官网上下载到最新的固件库。解压固件库后,有几个文件夹,我这里只是简单的说明各文件夹和文件的作用,具体的说明参考文件包中的chm帮助文档。Libraries是驱动文件夹,里面的

2015-03-02 14:28:05 24786 2

原创 stm8s 串口通讯源码程序(8位数据,奇校验,2个停止位)

串口初始化第一步,配置波特率,波特率是和时钟相关的,因此首先要配置时钟,时钟的配置参见上一篇博客。stm8s主时钟设置如果在串口初始化中,如果串口时钟没有打开,请在主时钟配置中打开串口时钟。配置波特率,stm8s的波特率,时钟,波特率寄存器值的计算相比avr和51又是巨大的进步,stm8s算波特率寄存器值只要Fmaster/波特率就可以了,不需要加加减减。但是在写入寄存器时需要

2014-12-07 00:19:35 9469

原创 STM8S 时钟配置源码程序

型号:stm8s903k3编译器:STVD4.3.5+cosmic 8k 5.4.1其他:采用操作寄存器,不使用库-----------------时钟是单片机的灵魂,所有的东西都和时钟有关。相比AVR反人类的熔丝位设置时钟/振荡源。stm只要操作寄存器就可以了。最关键的是!!就算设置错了也不!会!锁!死!----------------stm内部时钟示意图。

2014-12-06 23:56:51 5783 1

原创 ubuntu12.04 64位构建ARM交叉编译环境

网上相关文章很多,此文只为记录以便将来查询使用,根据学习记录更新,未完待续。--------环境---------虚拟机:VMware Workstation 10操作系统:ubuntu12.04 64位(虚拟机)/windows7 64位(台式)/windows8.1 64位(笔记本)工具链:arm-linux-gcc 4.4.3开发版镜像版本:linux-2.6.30.4

2014-03-08 12:24:19 1560

原创 构建嵌入式系统交叉内核源码树

在学习过程中,发现几乎所有的驱动书籍都忽略了一个问题,那就是内核源码树的构建编译。而网上大部分的资料也都忽略或者没写清楚了一个问题,当开发板的内核版本和PC机的内核版本不一致时,当开发板和pc机CPU架构不一致时内核源码树的构建。以及当内核版本不一致时Makefile的编写细节。例如,我的系统是Ubuntu12.04,内核版本是3.8.0-36,CPU架构是x86;而我的开发板版本是2.6.3

2014-03-03 13:33:40 1974

转载 ANSI,ASCII,Unicode,UTF-8的区别。自认为写得最好的一篇

原帖地址:http://www.myexception.cn/other/1464250.htmlANSI,ASCII,Unicode,utf-8的区别与联系很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节

2014-02-22 12:54:16 6862 2

原创 嵌入式寄存器操作-----C语言位操作的学习

学习嵌入式的过程中发现。C的位操作比较多,现根据资料整理如下。待以后查阅。根据芯片手册配置寄存器的过程中,时常碰到要设置某一位或某几位的数据,根据情况置0或者置1。而对于该寄存器其他的位,我们不关心也不应该关心(谁知道其他位会不会有其他用途)。这个时候,位操作是非常方便的。寄存器的位操作主要是将特定位置0或者置1。一般情况是先擦除相应的位(就是置0),然后再置1。1

2014-02-21 16:11:35 8764 2

转载 嵌入式C语言的杂七杂八

1,c语言是以功能进行划分的(面对对象中这是错误的)。        (1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;  (2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;  (3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;  (4) 永远不要在.h文件中定义变量!定义变量

2014-02-20 11:09:26 970

原创 u-boot-2012.10启动流程

同一个文件中不同阶段用1,2,3,4表示一个阶段中有其他小阶段,加小数点表示分阶段若这个阶段是跳到其他文件去了,那继续用1,2首先启动start.S(在arch/arm/cpu/arm920t/start.S){        1--定义中断向量处理程序标号/地址        2--定义各种内存布置地址标号        3--真正

2014-02-20 09:45:10 1070

空空如也

空空如也

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

TA关注的人

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