<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[零界]]></title><description><![CDATA[隔行如隔山，转行要乘早。]]></description><link>https://blog.csdn.net/zeroqvb</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zeroqvb]]></copyright><item><title><![CDATA[第一个STM8项目的记录]]></title><link>https://blog.csdn.net/zeroqvb/article/details/47055307</link><guid>https://blog.csdn.net/zeroqvb/article/details/47055307</guid><author>zeroqvb</author><pubDate>Sat, 25 Jul 2015 12:19:07 +0800</pubDate><description><![CDATA[说明我的第一个项目是stm8。 
显示部分是点阵加数码管，通过串口控制下位机变频器的运行。虽然看起来很简单，但是项目复杂度超过我以前开发板上的所有项目，因此碰到了很多前所未有的问题。在此记录一笔。 
注，这是本人第一个项目的记录，不保证科学与正确1，misplaced local declaration错误变量必须在函数的最开始处一口气全部声明或者定义掉 
这其实是说明cosmic不支持c99的原因]]></description><category></category></item><item><title><![CDATA[[蜂鸣器不简单]单片机中蜂鸣器的多种运用（长响，短响，多次响）]]></title><link>https://blog.csdn.net/zeroqvb/article/details/44302329</link><guid>https://blog.csdn.net/zeroqvb/article/details/44302329</guid><author>zeroqvb</author><pubDate>Wed, 15 Jul 2015 14:02:42 +0800</pubDate><description><![CDATA[在一般的单片机教材中，对蜂鸣器的使用都有简单的说明。这里就详细展开不同蜂鸣器，不同芯片的蜂鸣器写法了。
不过，在开发项目的时候发现，教材中的蜂鸣器使用存在很大的局限。

最大的局限就是不能使用delay这种忙循环函数，这种函数不仅对CPU资源有极大浪费，而且会延后其他函数的运行，如果有些时间相关的函数，会造成时间错乱。
此外在蜂鸣器响的过程中，不能进行除了中断之外的任何操作。严格来说，]]></description><category></category></item><item><title><![CDATA[[STVD可能有bug]向量文件中变量数值不能超过36767(即不能超过2字节)]]></title><link>https://blog.csdn.net/zeroqvb/article/details/44656735</link><guid>https://blog.csdn.net/zeroqvb/article/details/44656735</guid><author>zeroqvb</author><pubDate>Thu, 26 Mar 2015 22:10:47 +0800</pubDate><description><![CDATA[我刚接触stm8s时候，发现有两款编辑器，STVD和IAR，但两款都有些问题，不过最后我还是选择了IAR，因为STVD问题更多，而且还有些致命缺陷。
而下面说的是我发现的一个bug。但是无法解决。


STVD新建一个工程后，会有两个文件main.c和stm8_interrupt_vector.c。后者是中断向量文件。
但是，如果你在这个文件中定义函数的话……
比如下面的函数，其他工作]]></description><category></category></item><item><title><![CDATA[IAR for stm8使用标准固件库的方法以及注意事项]]></title><link>https://blog.csdn.net/zeroqvb/article/details/44017337</link><guid>https://blog.csdn.net/zeroqvb/article/details/44017337</guid><author>zeroqvb</author><pubDate>Mon, 02 Mar 2015 14:28:05 +0800</pubDate><description><![CDATA[标准库其实挺方便的。有了一个模板之后，如果改参数，根本就不需要再去查手册，重新定义寄存器值了。


第一部分，stm8标准库介绍。
stm8的标准库名称代码是stsw-stm8069，根据这个代码就可以到st的官网上下载到最新的固件库。
解压固件库后，有几个文件夹，我这里只是简单的说明各文件夹和文件的作用，具体的说明参考文件包中的chm帮助文档。
Libraries是驱动文件夹，里面的]]></description><category></category></item><item><title><![CDATA[stm8s 串口通讯源码程序(8位数据，奇校验，2个停止位)]]></title><link>https://blog.csdn.net/zeroqvb/article/details/41781795</link><guid>https://blog.csdn.net/zeroqvb/article/details/41781795</guid><author>zeroqvb</author><pubDate>Sun, 07 Dec 2014 00:19:35 +0800</pubDate><description><![CDATA[串口初始化第一步，配置波特率，波特率是和时钟相关的，因此首先要配置时钟，时钟的配置参见上一篇博客。stm8s主时钟设置
如果在串口初始化中，如果串口时钟没有打开，请在主时钟配置中打开串口时钟。
配置波特率，stm8s的波特率，时钟，波特率寄存器值的计算相比avr和51又是巨大的进步，stm8s算波特率寄存器值只要Fmaster/波特率就可以了，不需要加加减减。


但是在写入寄存器时需要]]></description><category></category></item><item><title><![CDATA[STM8S 时钟配置源码程序]]></title><link>https://blog.csdn.net/zeroqvb/article/details/41780539</link><guid>https://blog.csdn.net/zeroqvb/article/details/41780539</guid><author>zeroqvb</author><pubDate>Sat, 06 Dec 2014 23:56:51 +0800</pubDate><description><![CDATA[型号：stm8s903k3
编译器：STVD4.3.5+cosmic 8k 5.4.1
其他：采用操作寄存器，不使用库
-----------------
时钟是单片机的灵魂，所有的东西都和时钟有关。相比AVR反人类的熔丝位设置时钟/振荡源。stm只要操作寄存器就可以了。最关键的是！！就算设置错了也不！会！锁！死！
----------------
stm内部时钟示意图。]]></description><category></category></item><item><title><![CDATA[ubuntu12.04 64位构建ARM交叉编译环境]]></title><link>https://blog.csdn.net/zeroqvb/article/details/20770595</link><guid>https://blog.csdn.net/zeroqvb/article/details/20770595</guid><author>zeroqvb</author><pubDate>Sat, 08 Mar 2014 12:24:19 +0800</pubDate><description><![CDATA[网上相关文章很多，此文只为记录以便将来查询使用，根据学习记录更新，未完待续。
--------环境---------
虚拟机：VMware Workstation 10
操作系统：ubuntu12.04 64位（虚拟机）／windows7 64位（台式）／windows8.1 64位（笔记本）
工具链：arm-linux-gcc 4.4.3
开发版镜像版本：linux-2.6.30.4]]></description><category></category></item><item><title><![CDATA[构建嵌入式系统交叉内核源码树]]></title><link>https://blog.csdn.net/zeroqvb/article/details/20306597</link><guid>https://blog.csdn.net/zeroqvb/article/details/20306597</guid><author>zeroqvb</author><pubDate>Mon, 03 Mar 2014 13:33:40 +0800</pubDate><description><![CDATA[在学习过程中，发现几乎所有的驱动书籍都忽略了一个问题，那就是内核源码树的构建编译。而网上大部分的资料也都忽略或者没写清楚了一个问题，当开发板的内核版本和PC机的内核版本不一致时，当开发板和pc机CPU架构不一致时内核源码树的构建。以及当内核版本不一致时Makefile的编写细节。
例如，我的系统是Ubuntu12.04，内核版本是3.8.0-36，CPU架构是x86；而我的开发板版本是2.6.3]]></description><category></category></item><item><title><![CDATA[ANSI,ASCII,Unicode,UTF-8的区别。自认为写得最好的一篇]]></title><link>https://blog.csdn.net/zeroqvb/article/details/19680005</link><guid>https://blog.csdn.net/zeroqvb/article/details/19680005</guid><author>zeroqvb</author><pubDate>Sat, 22 Feb 2014 12:54:16 +0800</pubDate><description><![CDATA[原帖地址：http://www.myexception.cn/other/1464250.html


ANSI,ASCII,Unicode,utf-8的区别与联系

很久很久以前，有一群人，他们决定用8个可以开合的晶体管来组合成不同的状态，以表示世界上的万物。他们看到8个开关状态是好的，于是他们把这称为"字节"。 
再后来，他们又做了一些可以处理这些字节的机器，机器开动了，可以用字节]]></description><category></category></item><item><title><![CDATA[嵌入式寄存器操作-----C语言位操作的学习]]></title><link>https://blog.csdn.net/zeroqvb/article/details/19617871</link><guid>https://blog.csdn.net/zeroqvb/article/details/19617871</guid><author>zeroqvb</author><pubDate>Fri, 21 Feb 2014 16:11:35 +0800</pubDate><description><![CDATA[学习嵌入式的过程中发现。C的位操作比较多，现根据资料整理如下。待以后查阅。


根据芯片手册配置寄存器的过程中，时常碰到要设置某一位或某几位的数据，根据情况置0或者置1。而对于该寄存器其他的位，我们不关心也不应该关心（谁知道其他位会不会有其他用途）。
这个时候，位操作是非常方便的。


寄存器的位操作主要是将特定位置0或者置1。一般情况是先擦除相应的位（就是置0），然后再置1。
1]]></description><category></category></item><item><title><![CDATA[嵌入式C语言的杂七杂八]]></title><link>https://blog.csdn.net/zeroqvb/article/details/19545051</link><guid>https://blog.csdn.net/zeroqvb/article/details/19545051</guid><author>zeroqvb</author><pubDate>Thu, 20 Feb 2014 11:09:26 +0800</pubDate><description><![CDATA[1，c语言是以功能进行划分的（面对对象中这是错误的）。
        （1） 模块即是一个.c文件和一个.h文件的结合，头文件(.h)中是对于该模块接口的声明；
　　（2） 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明；
　　（3） 模块内的函数和全局变量需在.c文件开头冠以static关键字声明；
　　（4） 永远不要在.h文件中定义变量！定义变量]]></description><category></category></item><item><title><![CDATA[u-boot-2012.10启动流程]]></title><link>https://blog.csdn.net/zeroqvb/article/details/19540955</link><guid>https://blog.csdn.net/zeroqvb/article/details/19540955</guid><author>zeroqvb</author><pubDate>Thu, 20 Feb 2014 09:45:10 +0800</pubDate><description><![CDATA[同一个文件中不同阶段用1,2，3，4表示
一个阶段中有其他小阶段，加小数点表示分阶段
若这个阶段是跳到其他文件去了，那继续用1,2






首先启动
start.S（在arch/arm/cpu/arm920t/start.S）
{
        1--定义中断向量处理程序标号/地址

        2--定义各种内存布置地址标号

        3--真正]]></description><category></category></item></channel></rss>