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

原创 [蜂鸣器不简单]单片机中蜂鸣器的多种运用(长响,短响,多次响)
在一般的单片机教材中,对蜂鸣器的使用都有简单的说明。这里就详细展开不同蜂鸣器,不同芯片的蜂鸣器写法了。不过,在开发项目的时候发现,教材中的蜂鸣器使用存在很大的局限。最大的局限就是不能使用delay这种忙循环函数,这种函数不仅对CPU资源有极大浪费,而且会延后其他函数的运行,如果有些时间相关的函数,会造成时间错乱。此外在蜂鸣器响的过程中,不能进行除了中断之外的任何操作。严格来说,
2015-07-15 14:02:42
17478
11
原创 第一个STM8项目的记录
说明我的第一个项目是stm8。 显示部分是点阵加数码管,通过串口控制下位机变频器的运行。虽然看起来很简单,但是项目复杂度超过我以前开发板上的所有项目,因此碰到了很多前所未有的问题。在此记录一笔。 注,这是本人第一个项目的记录,不保证科学与正确1,misplaced local declaration错误变量必须在函数的最开始处一口气全部声明或者定义掉 这其实是说明cosmic不支持c99的原因
2015-07-25 12:19:07
5271
原创 [STVD可能有bug]向量文件中变量数值不能超过36767(即不能超过2字节)
我刚接触stm8s时候,发现有两款编辑器,STVD和IAR,但两款都有些问题,不过最后我还是选择了IAR,因为STVD问题更多,而且还有些致命缺陷。而下面说的是我发现的一个bug。但是无法解决。STVD新建一个工程后,会有两个文件main.c和stm8_interrupt_vector.c。后者是中断向量文件。但是,如果你在这个文件中定义函数的话……比如下面的函数,其他工作
2015-03-26 22:10:47
2506
1
原创 IAR for stm8使用标准固件库的方法以及注意事项
标准库其实挺方便的。有了一个模板之后,如果改参数,根本就不需要再去查手册,重新定义寄存器值了。第一部分,stm8标准库介绍。stm8的标准库名称代码是stsw-stm8069,根据这个代码就可以到st的官网上下载到最新的固件库。解压固件库后,有几个文件夹,我这里只是简单的说明各文件夹和文件的作用,具体的说明参考文件包中的chm帮助文档。Libraries是驱动文件夹,里面的
2015-03-02 14:28:05
25237
原创 stm8s 串口通讯源码程序(8位数据,奇校验,2个停止位)
串口初始化第一步,配置波特率,波特率是和时钟相关的,因此首先要配置时钟,时钟的配置参见上一篇博客。stm8s主时钟设置如果在串口初始化中,如果串口时钟没有打开,请在主时钟配置中打开串口时钟。配置波特率,stm8s的波特率,时钟,波特率寄存器值的计算相比avr和51又是巨大的进步,stm8s算波特率寄存器值只要Fmaster/波特率就可以了,不需要加加减减。但是在写入寄存器时需要
2014-12-07 00:19:35
9649
原创 STM8S 时钟配置源码程序
型号:stm8s903k3编译器:STVD4.3.5+cosmic 8k 5.4.1其他:采用操作寄存器,不使用库-----------------时钟是单片机的灵魂,所有的东西都和时钟有关。相比AVR反人类的熔丝位设置时钟/振荡源。stm只要操作寄存器就可以了。最关键的是!!就算设置错了也不!会!锁!死!----------------stm内部时钟示意图。
2014-12-06 23:56:51
5882
原创 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
1653
原创 构建嵌入式系统交叉内核源码树
在学习过程中,发现几乎所有的驱动书籍都忽略了一个问题,那就是内核源码树的构建编译。而网上大部分的资料也都忽略或者没写清楚了一个问题,当开发板的内核版本和PC机的内核版本不一致时,当开发板和pc机CPU架构不一致时内核源码树的构建。以及当内核版本不一致时Makefile的编写细节。例如,我的系统是Ubuntu12.04,内核版本是3.8.0-36,CPU架构是x86;而我的开发板版本是2.6.3
2014-03-03 13:33:40
2034
转载 ANSI,ASCII,Unicode,UTF-8的区别。自认为写得最好的一篇
原帖地址:http://www.myexception.cn/other/1464250.htmlANSI,ASCII,Unicode,utf-8的区别与联系很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节
2014-02-22 12:54:16
6917
原创 嵌入式寄存器操作-----C语言位操作的学习
学习嵌入式的过程中发现。C的位操作比较多,现根据资料整理如下。待以后查阅。根据芯片手册配置寄存器的过程中,时常碰到要设置某一位或某几位的数据,根据情况置0或者置1。而对于该寄存器其他的位,我们不关心也不应该关心(谁知道其他位会不会有其他用途)。这个时候,位操作是非常方便的。寄存器的位操作主要是将特定位置0或者置1。一般情况是先擦除相应的位(就是置0),然后再置1。1
2014-02-21 16:11:35
9028
2
转载 嵌入式C语言的杂七杂八
1,c语言是以功能进行划分的(面对对象中这是错误的)。 (1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明; (2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明; (3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明; (4) 永远不要在.h文件中定义变量!定义变量
2014-02-20 11:09:26
1018
原创 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
1159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人