切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 6078阅读
  • 18回复

[其他]零基础学习STM8开发笔记(一) [复制链接]

上一主题 下一主题
离线fox69
 

发帖
176
M币
1174
专家
7
粉丝
29
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2017-07-28
     最近有闲,想做个调光的LED玩玩,同时学习一下STM8单片机。说到零基础,是因为从没有用过STM8,单片机结构如何,硬件如何连接,用什么软件工具开发,如何下载调试都一窍不通。有很多没有任何单片机基础的网友想学习一下如何入门,我想通过我的摸索过程提供给大家一个参考应该具一定的价值,因为我也是入门级别,所以不敢称之为教程,只是一个系列笔记罢了,单片机板块高手多,不敢班门弄斧,就放DIY板块吧。
    说是零基础,并不是一点储备也没有,我觉得首先得有一定的模拟电路基础,不然无法理解单片机端口的模式设置,什么是悬浮、上拉、推挽和开漏等等;还得有一定数字电路基础,这样才能理解门电路、触发器、锁存器和信号时序等;得有点微机原理基础,知道寄存器、运算器、总线、机器代码等;得熟悉C语言的程序开发,不然怎么写程序啊。这些就靠大家之前的积累了,我以前也写过51单片机的程序,实现上面的简单应用没有问题,不需要太复杂的硬件连接,考虑一块低成本的核心板就可以了,发现STM8最便宜的核心板才34块钱,性能又比51强,果断决定放弃51

(一)、硬件准备
既然做简单的开发,也没必要花几百买个开发板,花极少的资金就能学会基本开发,以后有需要再加其他模块继续学习,或者自己做PCB就是了。





    STM8虽是八位机,但可寻址的空间可大于64位,也可进行32位的数据运算,STM8S103F38KFlash用于存放代码,有1KRAM3个定时器,还有640字节的EEPROM,可以保存程序动态数据和设置,如调光亮度等,而STM32则需要写FLASH,即便写一个字节也要清除整个扇区,不如STM8方便。STM8也比STM32省电,这块核心板4MA左右,STM32的工作电流得大10倍。



    这是STM8S103F3的管脚定义,保存下来以后有用。

    有了核心板,必须在PC上用C语言编程并下载到片上的Flash运行,对STM8常用两种方法,1是通过RS232的串口协议,2是利用STM8的专用仿真端口即SWIN方式。使用SWIN不仅可以下载程序,而且能利用仿真器对片上运行的程序进行实时调试,随时中断程序执行,查看程序变量和单片机寄存器的状态,比51单片机摸黑式的开发强多了。
为此要买个ST-Link仿真器,价格十几元左右。


    它不仅可以开发STM8而且可以开发STM32JLink仿真器可以开发全系列的ARM M3,但不能开发STM8ST-Link只对STM的产品有效,不过STM产品是我们最常用的单片机。
其他所需硬件:


    (1)灯珠:


    注意还得配一个散热器。


    (2)调光板:



    此恒流驱动板最大输出电流1.2A,可直接接入DC530V直流电,驱动18*1W灯珠。接入脉冲宽度调制信号(PWM)可以平滑地控制LED的亮度。
    (3)旋转编码器:


    调光板直接使用一个电位器就能进行模拟调光,但是电位器容易磨损,一旦接触不良,灯光不稳很难受。旋转编码器能正反向发出脉冲信号,由单片机解析并增减亮度级别,并输出PWM信号到调光板进行数字调光,不存在磨损的毛病,旋转的方式比使用加、减两个按钮控制更快捷方便。虽然简单问题复杂化了,但我的目的不是学习吗?多驱动一个设备就多点成就感。

    (48x8LED显示模块


    加个显示模块可以显示亮度级别,此模块与单片机通讯只使用3条线,大大节省端口,调通它就学会了SPI通讯方式,流行的OLED显示模块也使用SPI(也有用I2C,数据传输方面是相通的。
    (5)电源

    灯珠是3*3,电压应大于10伏,因此需要一个121A220V输入稳压电源。为给核心板供电还需要5V电压,再用一个DC-DC转换器:


    (二)、软件和知识预备
    (1PC端开发软件
开发STM8的软件工具主要有3种,一种是ST公司的ST ToolSet,可以用汇编语言开发调试STM8,还包括一个专门的下载烧写工具。
为了使用C语言开发,还要安装COSMIC作为插件。据说程序界面使用体验一般。
    另一种是IAR公司的EWSTM8,直接支持CC++编程,在他的集成环境中可以连接ST-Link进行下载和调试,完全可以满足我这次开发的需求,所以开发环境以EWSTM8为主。
    http://pan.baidu.com/s/1i5EE4Mp


    (2CC++语言
    简单的开发只使用C就可以了,你应该能用C编写简单程序,掌握了变量、数组、函数、循环、条件判断等用法,这方面谭浩强的书比较经典。学习过汇编语言更具有优势,你就了解了高级语言编译成机器指令是如何运行的,对写出高效和优化的代码很有帮助。例如以前开发51板时4KFlash实在不够用,只有压缩程序,为从年月日得出星期几,不断优化算法,独创了1行代码的查表(表里只有不到10个字节数据)实现方法,虽然不能适应所有年代,但本世纪没问题。
注意COSMICIARC语言在标准C上基本相同,但具体到STM8上对端口、寄存器的定义还有一些宏定义是不同的,程序不经修改没法通用,好在使用开发IAR的用户也不少。
    (3)单片机开发手册
    STM单片机的开发分使用写寄存器和使用库函数两种风格,作为入门者,还是先使用寄存器方法,对理解单片机的运行机理比较有帮助。

    推荐阅读《STM8S 参考手册》。http://pan.baidu.com/s/1qXVKVVY
    (三)、PC端环境搭建
    (1ST-Link驱动安装

    安装ST-Link附带的驱动程序,在USB口插上ST-Link后,在PC的硬件资源中可以看到:


    如果其未在通用串行总线控制器中,并且也不是这样的名称同时带有黄色惊叹号,说明驱动未被系统识别,我使用Win10第一次就未安装成功,右击带叹号的条目,更新驱动程序,让它到网上自动搜索,终于正确完成安装。

    (2)安装EWSTM8








    此共享版本对代码长度有一定限制,请参考http://pan.baidu.com/s/1qYVvkmg解决。
    待续(下一篇见http://bbs.mydigit.cn/read.php?tid=2176066&ds=1)。


[ 此帖被fox69在2017-07-28 15:58重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共10条打赏M币+83专家+3
离线w1103652154

发帖
1135
M币
325
专家
4
粉丝
34
只看该作者 1楼 发表于: 2017-07-28
离线yi0819

发帖
1499
M币
68
专家
2
粉丝
46
只看该作者 2楼 发表于: 2017-07-28
请登录后查看
离线aygxycs

发帖
106
M币
317
专家
0
粉丝
11
只看该作者 3楼 发表于: 2017-07-28
请登录后查看
离线wlhcq
发帖
31
M币
-479
专家
0
粉丝
4
只看该作者 4楼 发表于: 2017-07-28
请登录后查看
离线mark_pc

发帖
283
M币
781
专家
0
粉丝
11
只看该作者 5楼 发表于: 2017-07-28
请登录后查看
离线数码家园

发帖
5228
M币
16486
专家
31
粉丝
540
只看该作者 6楼 发表于: 2017-07-28
请登录后查看
离线lcy960

发帖
2312
M币
30
专家
1
粉丝
18
只看该作者 7楼 发表于: 2017-07-28
请登录后查看
离线在路上795

发帖
2481
M币
1936
专家
0
粉丝
30
只看该作者 8楼 发表于: 2017-07-28
离线dzljp

发帖
7351
M币
16345
专家
4
粉丝
27
只看该作者 9楼 发表于: 2017-07-28
请登录后查看
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个