查看: 1041|回复: 0
打印 上一主题 下一主题

STM8l最白菜的入门

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-20 20:37:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1 读懂头文件

1 选择器件

  它把stm8l15x系列,按照FLASH大小,分成了三个基本系列

2 编译器检查

  它支持 IAR COSMIC 和 STVD

  我用的是IAR

    不过这个宏是怎么打开的,我没有见到 很明显的定义宏,应该是在IAR下正确建立项目文件以后,就会自动识别的。

以上这些宏如果不打开,编译时就会遇到错误。这种 错误提示 是通过 #error宏定义实现的,由此我们学到了一个在预编译阶段提示错误的办法。

中间有不少内容是 关于 本系列芯片的一些不同设置的选择:要理解它们需要对这个系列的芯片有一定的认识,我对此不了解,看不出什么门道。

不过对于入门,我们是可以忽略他的了。

接下来从gpio开始,篇幅最大的一部分是 各种 外设控制寄存器 的 结构体。

其组织方式的特点是,把相应的寄存器全部定义成一个个的结构体,由此,就可以直接在RAM上定义这些结构体变量,从而直接通过结构体控制寄存器,在一定程度上实现了硬件的抽象。

此外还有各种设置寄存器的 宏掩码,位掩码宏 等等。

包括一些 C编译器 的扩展关键字 ,它也是通过宏 实现调用。

比如 FAR NEAR

——当然,现在我也不知道这到底是怎么用的。

2 在IAR下建立一个项目文件

在IAR下建一个STM8L的项目文件——我相信,对于STM32以及STM8S等其他系列也是一样的。

这件事情其实很简单,不过,鉴于个人的原因,我曾经在这件事情相当蛋疼,造成这种原因主要有两个:

1 都说STM的资料很翔实,实际上,据我看来,那些资料大都是涉及到具体应用方面,或者是硬件的资料,而对于入门,特别是对于基本没这方面基础的人来说是比较少的。(故而我一度如此蛋疼,故而我写这个文档,对于懂的人来说,它是一堆废话,它说的内容也很白菜,我只希望,如果你曾经像我一样为此蛋疼不已,我希望它能对你有切实的作用。)

2 STM实现硬件底层的方式比较特别,最主要表现在它的固件库——实际上,一度我以为这是它意法一家独创,然而,后来在我接触到另外几款微处理器时,我无意发现,其实它们的处理手法是类似的。

只是,相比于51而言,要较好理解这个固件库,你需要稍微好一点的C语法基础,比如能看懂一些宏定义(宏能实现的功能远远超出你的想象,这是一本C语言书上说的,现在我相信了。)

能看理解那些结构体的意义,是因为它能把成员定义在连续RAM空间上,或至少你要能理解结构体的成员操作符等等——不怕你笑话,曾经的我,还以为 成员操作符 是 STM32 库里的特殊方法实现的,殊不知,其实它是标准C的语法项目。

上面说的是客观原因,还有一个很重要的主观原因是我不够耐心去搜索网上的教程,总是因为没有找到我想知道的问题就草草放过,导致后来想起来,其实很多东西就在自己的文件夹里,只是自己不知道,所谓骑驴找驴。

回到正题。

在这里,我首先提供一份我在网上下载的stm8l的建立工程项目文件的pdf——这一次终于学会了怎么建立项目文件,都得归功于他。

这里,我简单提一下整个过程,会说到一些需要注意的地方,并加以解释。更多的细节你应该可以在这份pdf中找到。

1 首先,你要创建这个项目文件: 点 Project -- Create New Project

你会见到一个窗口,它提示你,使用的 工具链 是 STM8 系列

   tool-chain STM8 Series

   下面有几个选项:

   1 Empty Project   空的项目文件

   2 ASM             汇编文件

   3 C               C源文件

   4 C++             C++源文件

   这里,要记住,创建 项目文件 时,一定要选择 第一个 空项目文件

   笔者第一次就因为没有参考入门资料,自己瞎猜,选择了 第三个,导致我根本无法编译。

   此外,我注意到了,它居然提供了C++编译器!!

2 现在我们已经有了壳,你可以在 Workspace窗口 ,也就是左手边的这个,我们常叫它 项目管理窗口

  见到一个蓝色方块实体,它的名字是 g-Debug,其中g是我的项目名,Debug表示它是一个调试模式的文件。

   然后我们通过 File -- New --File 来建立一个C源文件。

   一开始,你可以什么都不写,只是一个空的主函数

int main(void)

{

  return 0;

}

3 编译 我们的 主函数。

  右键 g-Debug,下拉菜单里,会看到 Rebuild All这个选项,并不是说只有这个选项,不过,我们一般都用这个选项,因为它会重新编译我们所有的源文件。

   这时,会弹出一个窗口,要求你存储一个 格式为 .eew 的文件--- 这个东西正是这个项目的工作环境文件。

然后你会看到 编译,链接,提示错误和警告数目,如果有,它还会提示具体错误信息。

这个如此简单的程序,自然是 零错误,零警告 的。

这也是我们以后写程序的一个要求,至少要是两个0,不然还怎么谈得上写出好程序?

4 现在,我们要把STM8L的固件库 加进来

  按道理,这应该是有两种方式实现的,其一,IAR的安装文件本身已经包含了库,我们只需要调用,其二,我们直接把库的源码放进来,然后重新编译,链接——别担心,这只是说一个过程而已,实际上我们除了包含头文件和源文件进我们建立的项目文件,其他事情都交给编译器去完成。

  如何获取固件库的源码?

  最简单的方式,到st的官网下载一个例程,里面包含了完整的固件库,研读这个例程,我们还能学会如何操作这些API,去实现相应的外设操作。

   我们将以gpio为入门任务,通过阅读其头文件,掌握相应的硬件信息和操作API

   ——这将成为一种新的开发模式,它的好处非常明显,让我们尽可能少去关心硬件底层的实现方式,快速应用起来。

   快1点了,写到这里,有点困了,要睡觉了。这段时间赶项目相当累,还是早点睡为好。其实昨天就想写这个笔记,但昨晚有别的事情做,今晚也就只写了这么多。

   下一篇只能过后再写了,下一篇我将写到加入gpio的库,然后用开关点亮一个LED。

差点忘了说,笔者的开发板是 stm8l-discover,是我在淘宝上买的一个88快的开发板,小巧,而且还自带了ST-LINK的下载器,我买它是为了一个小项目准备的。



     

      


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表