STM8低门槛快速入门,类似Arduino封装库模式开发介绍
- 📌STM8外设封装库原项目开源地址:
https://github.com/gicking/STM8_templates
- 📍个人整理过的项目地址:
https://github.com/perseverance51/STM8-Templates
- 🏳🌈说明:类似Arduino封装库,并不是在Arduino平台来开发STM8。开发模式是基于SDCC和STVP环境的。编译速度是Arduino开发环境没法比的。
📓STM8外设封装库介绍
单独从所提供的外设库和ST官方所提供的标准外设库差异不大,主要区别在于,在使用外设的开发例程里已经做好了进一步的封装,并补充了常见的串口调试输出接口函数,以及其他功能和外设的使能。虽然原作者已经停止了维护,但是已开发出来的框架还是可以使用的。
- 🌿对于轻度开发者来说,可以拿来即用,易上手。如果是做单片机重度开发,那么就不推荐使用,毕竟STM8硬件资源有限,主要满足低端类产品的开发需求。
📝编译器说明
- 🖋该库提供了STVP开发工程案例,外设库也支持SDCC编译器。个人没有具体使用SDCC编译器测试过。
🏳🌈外设例程说明
- 📋原作者已经停止维护。在原作者的基础上,对STVP开发平台所有项目进行了编译测试,保证都能通过。但是不保证所有程序,烧录到目标芯片上都能达到预期效果,这一点需要自己验证。
- 🚩个人整理的内容中添加了使用外部时钟源相关代码。
// switch to 16MHz (default is 2MHz 1/8)
// CLK.CKDIVR.byte = 0x00; //默认选择内部时钟源,时钟不分频,16MHz
CLK.ECKR.byte = 0x01;/*高速外部晶体振荡器使能*/
while (!(CLK.ECKR.byte & 0x02));/*HSE准备就绪*/
CLK.SWCR.byte |= 0x02; //swen enable Conversion Enables the automatic conversion mode
CLK.SWR.byte = 0xB4; //Select HSE CLK
while (!(CLK.SWCR.byte & 0x08)); //WAIT
CLK.SWCR.byte &=~0x02;//禁止时钟切换
CLK.ICKR.byte |=~0x01; //disable HSI
- 🌿主要的业务代码还是在main.c中写,如果不需要修改时钟和时基的情况下。main.c中的函数最终时放在了
main_general.c
中执行。
🌼外设项目架构
- 🍁STVP 工作空间,使用不同的外设需要包含对应的源文件和头文件。
🛠STVP编译工具链配置
-
🔨需要安装:
Cosmic CxSTM8
,如果项使用最新的,就去官方下载,可以申请免费使用一年的许可。不使用最新的可以下载国内提供的和谐版本:Cosmic CxSTM8 32K 4.3.4
,在各大资源网站可下载到。 -
🔧安装好后,项目配置:
-
👉🏻stm8单片机型号选择/切换:
-
📐生成独立的HEX文件
chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8
chex -o $(OutputPath)$(TargetSName).HEX $(OutputPath)$(TargetSName).sm8
- 🎉个别项目需要修改存储模式:(例如在使用
SD-card_fatFS
例程)
✨如果个人使用时,程序很大,编译报错时,也可以修改。