最近有闲,想做个调光的LED玩玩,同时学习一下STM8单片机。说到零基础,是因为从没有用过STM8,单片机结构如何,硬件如何连接,用什么软件工具开发,如何下载调试都一窍不通。有很多没有任何单片机基础的网友想学习一下如何入门,我想通过我的摸索过程提供给大家一个参考应该具一定的价值,因为我也是入门级别,所以不敢称之为教程,只是一个系列笔记罢了,单片机板块高手多,不敢班门弄斧,就放DIY板块吧。 说是零基础,并不是一点储备也没有,我觉得首先得有一定的模拟电路基础,不然无法理解单片机端口的模式设置,什么是悬浮、上拉、推挽和开漏等等;还得有一定数字电路基础,这样才能理解门电路、触发器、锁存器和信号时序等;得有点微机原理基础,知道寄存器、运算器、总线、机器代码等;得熟悉C语言的程序开发,不然怎么写程序啊。这些就靠大家之前的积累了,我以前也写过51单片机的程序,实现上面的简单应用没有问题,不需要太复杂的硬件连接,考虑一块低成本的核心板就可以了,发现STM8最便宜的核心板才3、4块钱,性能又比51强,果断决定放弃51。 (一)、硬件准备既然做简单的开发,也没必要花几百买个开发板,花极少的资金就能学会基本开发,以后有需要再加其他模块继续学习,或者自己做PCB就是了。
STM8虽是八位机,但可寻址的空间可大于64位,也可进行32位的数据运算,STM8S103F3有8K的Flash用于存放代码,有1K的RAM,3个定时器,还有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而且可以开发STM32,JLink仿真器可以开发全系列的ARM M3,但不能开发STM8,ST-Link只对STM的产品有效,不过STM产品是我们最常用的单片机。其他所需硬件: (1)灯珠:
注意还得配一个散热器。
(2)调光板:
此恒流驱动板最大输出电流1.2A,可直接接入DC5~30V直流电,驱动1~8*1W灯珠。接入脉冲宽度调制信号(PWM)可以平滑地控制LED的亮度。 (3)旋转编码器:
调光板直接使用一个电位器就能进行模拟调光,但是电位器容易磨损,一旦接触不良,灯光不稳很难受。旋转编码器能正反向发出脉冲信号,由单片机解析并增减亮度级别,并输出PWM信号到调光板进行数字调光,不存在磨损的毛病,旋转的方式比使用加、减两个按钮控制更快捷方便。虽然简单问题复杂化了,但我的目的不是学习吗?多驱动一个设备就多点成就感。 (4)8x8的LED显示模块
加个显示模块可以显示亮度级别,此模块与单片机通讯只使用3条线,大大节省端口,调通它就学会了SPI通讯方式,流行的OLED显示模块也使用SPI(也有用I2C),数据传输方面是相通的。 (5)电源 灯珠是3*3,电压应大于10伏,因此需要一个12伏1A的220V输入稳压电源。为给核心板供电还需要5V电压,再用一个DC-DC转换器:
(二)、软件和知识预备 (1)PC端开发软件开发STM8的软件工具主要有3种,一种是ST公司的ST ToolSet,可以用汇编语言开发调试STM8,还包括一个专门的下载烧写工具。为了使用C语言开发,还要安装COSMIC作为插件。据说程序界面使用体验一般。 另一种是IAR公司的EWSTM8,直接支持C和C++编程,在他的集成环境中可以连接ST-Link进行下载和调试,完全可以满足我这次开发的需求,所以开发环境以EWSTM8为主。 http://pan.baidu.com/s/1i5EE4Mp
(2)C或C++语言 简单的开发只使用C就可以了,你应该能用C编写简单程序,掌握了变量、数组、函数、循环、条件判断等用法,这方面谭浩强的书比较经典。学习过汇编语言更具有优势,你就了解了高级语言编译成机器指令是如何运行的,对写出高效和优化的代码很有帮助。例如以前开发51板时4K的Flash实在不够用,只有压缩程序,为从年月日得出星期几,不断优化算法,独创了1行代码的查表(表里只有不到10个字节数据)实现方法,虽然不能适应所有年代,但本世纪没问题。注意COSMIC和IAR的C语言在标准C上基本相同,但具体到STM8上对端口、寄存器的定义还有一些宏定义是不同的,程序不经修改没法通用,好在使用开发IAR的用户也不少。 (3)单片机开发手册 STM单片机的开发分使用写寄存器和使用库函数两种风格,作为入门者,还是先使用寄存器方法,对理解单片机的运行机理比较有帮助。 推荐阅读《STM8S 参考手册》。http://pan.baidu.com/s/1qXVKVVY (三)、PC端环境搭建 (1)ST-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重新编辑 ]