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的下载器,我买它是为了一个小项目准备的。
[attach]3331[/attach]
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |