硬件电路搞定了,资料也找到了,下面我们就要开始进行实际的动手操作了。首先,先找来一根USB线,(大家最好购买质量好一点的,我开始贪图便宜,发现总是有些奇怪的问题,无奈下换了根线,一切就都搞定了)直接连接开发板及电脑,如果不出意外的话板子就应该会点亮,同时屏幕上也会有显示了。
通过查看板子包装盒后面的说明,原来开发板在出厂的时候内部就写入了一个测试当前电流、电压,并把结果显示在屏幕上的小程序。同时,通过这个程序也展示了STM8 在低功耗方面的出色。每按下板子上的“用户按键”一次,STM8就切换工作模式一次,并且测试在不同工作模式下的消耗电流。可以看到STM8的低功耗还是做得不错的,这也是它主推的市场嘛。
在这里我用到的IAR开发环境,所以我们就以IAR为例来说明如何开发STM8的程序。
首先,我们从IAR的网站上把开发环境下载下来,(注意:由于IAR所支持的MCU众多,所以大家下载的时候可要看仔细了)我下载的是30天的时间限制版本,整个安装过程就不多说了,一路“NEXT”就能搞定,不过在需要输入序列号的地方把IAR给的临时序列号输入即可。
打开IAR,新建工程(Project->Creat New Project...),将会出现如下窗口:
这个窗口是告诉我们如何需要用什么语言来开发我们的程序,一般来说都是选择C,当然你也可以选择汇编和C++,选择好保存后,从固件库demo中将如下文件夹及其里面的文件复制到工程文件目录的相关文件夹,并添加到工程中。
这个文件夹是干嘛的呢?百度一下,原来ST公司为了方便开发者,提高开发的效率,把所有对芯片的操作都C语言接口的形式进行了封装。这个文件夹里面包含的就是对STM8操作的基本库函数。有了库,用户在开发的时候就无需关心对底层寄存器的操作,只需要对封装后的库进行调用即可。除了STM8外,ST公司几乎所有的产品都有配套的库推出,例如:STM32同样拥有库。估计有些童鞋有疑问了:使用库和直接操作寄存器到底谁的效率高呢?从理论上来说,直接操作寄存器程序运行的效率肯定比使用库要高一些,但是实际工程的讲究整个项目的进度、稳定性、成本等等。使用库,程序运行的时间或许会稍长一点,但是换来的确是整个项目时间的缩短,系统稳定性的提升,人力成本的节约,所以就我看来,使用ST提供的库函数还是很值得的。这就好比是C语言与汇编:虽然用汇编编写的程序执行的效率很高,但是有多少人用它呢?
新建完工程以后就要对项目进行设置了,这里的设置主要是选择目标芯片,对应库文件的位置以及仿真器型号的选择,打开Project->Options出现如下界面:
最主要的是在Device里面选择我们对应的芯片的信号,由于我们开发板上的是STM8L152C6,所以我们就选择这个。CODE,DATA两栏就根据实际的代码量进行填写。
点击C/C++ Complier->Preprocessor,设置如下图所示。
$PROJ_DIR$\..\inc………………………………………………
这句话的意思是在工作区的上一层目录中的inc文件中寻找
$PROJ_DIR$\..\..\..\Libraries\STM8L15x_StdPeriph_Driver\inc……
这句话的意思是在工作区的上三层目录中的Libraries\STM8L15x_StdPeriph_Driver\inc文件路径中寻找。
点击Debugger->Setup,将Driver选择为ST-LINK
在设置完开发环境后,就可以在工程目录下新建MAIN.C文件,并且在main.c文件中编写相应代码,调试并运行了。
上面说到STM8库的问题,下面我们就来实际测试下使用库和直接操作寄存器会对程序的效率有多大的影响。为了测试准确,我们在主函数中删除了其他无关的代码,只留下了对PE7口进行翻转的相关代码。测试的仪器采用的是优力得200M带宽数字示波器,并且对PE7口都设置为推挽高速输出。
使用库函数的代码:
while (1)
{
GPIO_SetBits(LED1_PORT, LED1_PIN);
GPIO_ResetBits(LED1_PORT, LED1_PIN);
}
使用直接操作寄存器的代码:
while(1)
{
LED1_PORT->ODR = ~(LED1_PORT->ODR);
}
测试结果如下图所示:
直接操作寄存器方式
采用库函数方式
上边是采用直接操作寄存器方式得出的数据,下边是采用库的方式得出的数据。注意看两张图片的右上角。直接操作寄存器得到的波形频率大概为200K,而采用库的方式得到的波形频率大概是70K.所以我个人认为如果大家项目对时间、效率要求比较严格的话还是尽量使用直接操作寄存器的方式吧。
开发过程中当然避免不了出现问题。出现问题并不可怕,可怕的是怎么样去解决这些问题。有经验的工程师估计都陷入过“上天无门,下地无路”的尴尬境地吧。幸好这些问题在开发STM8的过程中是不会遇到的。由于STM8是如此的优秀,很多地方都对这块芯片开设了讨论社区。下面看到的就是STM32/STM8技术专区,这里面可是有ST公司的工程师支持的哦。
除此之外,还有与非网的STM32/STM8社区,里面也有很多资料值得参考。
要说比较权威的当然是ST公司自己的E2E专业社区了,不过可惜全都是E文的,E文不好的同学可要加油了……
从头到尾讲了这么多了,那么这样一块简单、实用的开发板到底什么地方可以购买呢?价格到底怎么样呢?其实购买的途径有很多,比如说淘宝啦,价格也不贵。如果有些同学比较喜欢原厂的话也可以到专业的电子元器件分销商处购买,例如:Digi-Key,派睿等等。下面几张图片是几家大型的电子元器件分销商的截图,基本上这块板子在各大分销商处都货源充足。大家可以按需选择。
MOUSER 的价格
u Horizons Electronics Corp 的价格
DIGI-KEY的价格
参考资料:
- STM8L探索套件笔记发布
- STM8L-Discovery开发板评测(一)
- STM8L-Discovery开发板测评(二)
- STM8L学习笔记
- STM8L社区
原创申明:本文为爱板网原创,谢绝转载!
硬件电路搞定了,资料也找到了,下面我们就要开始进行实际的动手操作了。首先,先找来一根USB线,(大家最好购买质量好一点的,我开始贪图便宜,发现总是有些奇怪的问题,无奈下换了根线,一切就都搞定了)直接连接开发板及电脑,如果不出意外的话板子就应该会点亮,同时屏幕上也会有显示了。
通过查看板子包装盒后面的说明,原来开发板在出厂的时候内部就写入了一个测试当前电流、电压,并把结果显示在屏幕上的小程序。同时,通过这个程序也展示了STM8 在低功耗方面的出色。每按下板子上的“用户按键”一次,STM8就切换工作模式一次,并且测试在不同工作模式下的消耗电流。可以看到STM8的低功耗还是做得不错的,这也是它主推的市场嘛。
在这里我用到的IAR开发环境,所以我们就以IAR为例来说明如何开发STM8的程序。
首先,我们从IAR的网站上把开发环境下载下来,(注意:由于IAR所支持的MCU众多,所以大家下载的时候可要看仔细了)我下载的是30天的时间限制版本,整个安装过程就不多说了,一路“NEXT”就能搞定,不过在需要输入序列号的地方把IAR给的临时序列号输入即可。
打开IAR,新建工程(Project->Creat New Project...),将会出现如下窗口:
这个窗口是告诉我们如何需要用什么语言来开发我们的程序,一般来说都是选择C,当然你也可以选择汇编和C++,选择好保存后,从固件库demo中将如下文件夹及其里面的文件复制到工程文件目录的相关文件夹,并添加到工程中。
这个文件夹是干嘛的呢?百度一下,原来ST公司为了方便开发者,提高开发的效率,把所有对芯片的操作都C语言接口的形式进行了封装。这个文件夹里面包含的就是对STM8操作的基本库函数。有了库,用户在开发的时候就无需关心对底层寄存器的操作,只需要对封装后的库进行调用即可。除了STM8外,ST公司几乎所有的产品都有配套的库推出,例如:STM32同样拥有库。估计有些童鞋有疑问了:使用库和直接操作寄存器到底谁的效率高呢?从理论上来说,直接操作寄存器程序运行的效率肯定比使用库要高一些,但是实际工程的讲究整个项目的进度、稳定性、成本等等。使用库,程序运行的时间或许会稍长一点,但是换来的确是整个项目时间的缩短,系统稳定性的提升,人力成本的节约,所以就我看来,使用ST提供的库函数还是很值得的。这就好比是C语言与汇编:虽然用汇编编写的程序执行的效率很高,但是有多少人用它呢?
新建完工程以后就要对项目进行设置了,这里的设置主要是选择目标芯片,对应库文件的位置以及仿真器型号的选择,打开Project->Options出现如下界面:
最主要的是在Device里面选择我们对应的芯片的信号,由于我们开发板上的是STM8L152C6,所以我们就选择这个。CODE,DATA两栏就根据实际的代码量进行填写。