15346|11

7815

帖子

57

TA的资源

裸片初长成(中级)

楼主
 

STM8l最白菜的入门笔记(1)——如果你也曾像我一样对STM32/STM8各种蛋疼 [复制链接]

首先,作为预备知识,我觉得我们应该看懂 一个 最基本 的头文件 stm8l115x.h,它定义了所有外设,是其他所有外设库函数的基础。

具体在 头文件 中的位置,我会在其中以注释说明

 

                           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的下载器,我买它是为了一个小项目准备的。

   当然,我不是打广告,你懂的。

 

 

 

 

  

stm8l15x.h.txt

122.36 KB, 下载次数: 328

EWARM快速入门指南-ST.pdf

1.58 MB, 下载次数: 746

此帖出自stm32/stm8论坛

最新回复

这就完了?后续呢  详情 回复 发表于 2017-8-21 16:48
点赞 关注(1)
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

2057

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

回复 楼主 辛昕 的帖子

及时雨啊!这几天刚好开始接触stm8s
此帖出自stm32/stm8论坛
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

蛋疼

 楼主我跟你一样蛋疼...
此帖出自stm32/stm8论坛
 
 

回复

2453

帖子

19

TA的资源

五彩晶圆(中级)

4
 
哇咔咔,不错哦
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
就想要这些。我也很蛋疼的。。。LZ继续啊。。
此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

6
 
好吧,加班加到蛋疼的飘过,我今晚写个gpio的,,拖太久了.......对得起谁啊
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 

楼主好人啊!!

楼主真是帮了我大忙啊!!
此帖出自stm32/stm8论坛
 
 
 

回复

674

帖子

5

TA的资源

纯净的硅(初级)

8
 

{:tongue:}哪位有多余的STM8L-discovery,我拿其他开发板互换

{}哪位有多余的STM8L-discovery,我拿其他开发板互换
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
支持 本人初学小菜一枚
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼主   不更新了吗?
好希望下一章是adc   好多用法都看不懂
此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

11
 
1039115186 发表于 2016-3-17 13:37
楼主   不更新了吗?
好希望下一章是adc   好多用法都看不懂:Cr ...

我好多年没用stm8l了
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

39

帖子

2

TA的资源

一粒金砂(中级)

12
 
这就完了?后续呢
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表