STM8低门槛快速入门,类似Arduino封装库模式开发介绍

news2024/7/6 18:33:06

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例程)

✨如果个人使用时,程序很大,编译报错时,也可以修改。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发常用Nginx设置说明

前端部署常用到Nginx,作为前端开发常用的配置不多,担也需要掌握 常见配置说明,这里只列表server模块的核心代码 server {listen 9015; # 端口号server_name 172.16.101.191; # 浏览器访问域名,不配置默认为本服务器地址index in…

redhat6安装mysql8.0.33

1、下载mysql 官网地址:https://downloads.mysql.com/archives/community/ 下载步骤: 过滤操作系统版本 下载后,上传到服务器Downloads目录 2、安装mysql8 解压压缩包 tar -xvf mysql-8.0.31-1.el9.x86_64.rpm-bundle.tar [rootrhel64 …

node搭建一个简单的脚手架

一、什么是脚手架 脚手架(Scaffold)是指在软件开发过程中为提高开发效率而提供的一套基础代码结构、组织规范、开发工具和工程化配置的工具。脚手架可以帮助开发团队快速搭建项目的基础框架,规范项目的开发流程,并提供一些常用的…

指针函数与函数指针

指针函数 指针函数&#xff1a;指针函数是一个函数&#xff0c;返回值是一个指针。 int *fun; //fun是指针变量 int *fun(x,y); //fun是指针函数; #include<iostream> using namespace std;char* day_name() {return("Monday"); //返回地址 }int main() {char…

堆排序选择排序

选择排序 选择排序&#xff08;Selection sort&#xff09;是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&…

Linux系统下 - [linux命令]查找包含指定内容的文件

格式1&#xff1a;grep -r “指定内容” 目录 eg:输出包含"指定内容"的文件列表以及简要信息 查找当前目录下的 CONFIG_ESP_SMARTCONFIG_TYPE grep -r "CONFIG_ESP_SMARTCONFIG_TYPE" .格式2&#xff1a;grep -r -l “指定内容” 目录 eg:仅输出包含&q…

模拟Toast 自定义提示框

模拟Toast 自定义提示框 前言 为满足产品需求&#xff0c;发现现在的ToastUtils不是太重就是不太满足需求&#xff0c;这边写个简单易用的工具&#xff0c;几十行代码解决的问题,还要啥轮子。 功能如下&#xff1a; 自动消失相对锚点位置 可配置&#xff0c;正中间&#x…

刷题日记06《回溯算法》

问题描述 力扣https://leetcode.cn/problems/Ygoe9J/ 给定一个无重复元素的正整数数组 candidates 和一个正整数 target &#xff0c;找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。 candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同…

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之非阻塞缓存(四)

优化四&#xff1a;非阻塞缓存&#xff0c;提高缓存带宽 对于允许乱序执行的流水线计算机&#xff0c;处理器不需要因数据高速缓存未命中而停止。 例如&#xff0c;处理器可以继续从指令高速缓存获取指令&#xff0c;同时等待数据高速缓存返回丢失的数据。 非阻塞高速缓存或无…

23家企业推出昇腾AI系列新品 覆盖云、边、端智能硬件

[中国&#xff0c;上海&#xff0c;2023年7月6日] 昇腾人工智能产业高峰论坛在上海举办。论坛现场&#xff0c;大模型联合创新启动&#xff0c;26家行业领军企业、科研院所与华为将共同基于昇腾AI进行基础大模型与行业大模型应用创新。同时&#xff0c;华为携手伙伴联合发布昇腾…

Java虚拟机(JVM)、垃圾回收器

一、Java简介 1、Java开发及运行版本 JRE(Java Runtime Environment&#xff0c;运行环境) 所有的程序都要在JRE下才能够运行。包括JVM和Java核心类库和支持文件。JDK(Java Development Kit&#xff0c;开发工具包) 用来编译、调试Java程序的开发工具包。包括Java工具(javac/…

【LNMP】架构及应用部署 搭建电影网站

准备环境 一台虚拟机192.168.108.67 关闭防火墙 systemctl stop firewalld iptables -F setenforce 0 检查光盘 查看yum仓库 安装nginx依赖 [rootlocalhost ~]# yum -y install pcre-devel zlib-devel 创建管理nginx用户&#xff08;用来运行nginx&#xff09; [rootlocalh…

picard安装时报错“Exception in thread “main“ java.lang.UnsupportedClassVersionError”

最近在通过GATK所介绍的best practice流程来call SNP流程 1.流程 1.1 BWA比对&#xff0c;获得sam文件 1.2 准备用picard来压缩排序sam文件为bam文件&#xff0c;并对bam文件进行去重复&#xff08;duplicates marking&#xff09; 这是就需要用到picard软件 按照教程网页上…

go-zero的rpc服务案例解析

go-zero的远程调用服务是基于gRpc的gRPC教程与应用。 zero使用使用gRpc需要安装protoc插件&#xff0c;因为gRpc基于protoc插件使用protocol buffers文件生成rpc服务器和api的代码的。 gRPC 的代码生成还依赖 protoc-gen-go&#xff0c;protoc-gen-go-grpc 插件来配合生成 Go…

机器学习笔记 - 局部敏感哈希简介

一、算法简述 局部敏感散列 (LSH) 技术,可显著加快对数据的邻居搜索或近似重复检测。例如,这些技术可用于以惊人的速度过滤掉抓取网页的重复项,或者从地理空间数据集中对附近点执行近恒定时间查找。 让我们快速回顾一下其他类型的哈希函数,哈希函数的传统用途是…

青岛大学_王卓老师【数据结构与算法】Week04_13_案例分析与实现3_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

漏洞检测01:DNS域传送漏洞

DNS域传送漏洞 文章目录 DNS域传送漏洞漏洞描述检测方法修复建议 DNS域传送漏洞 该漏洞当下已经非常少了 DNS服务器分为&#xff1a;主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库&#xff0c;需要使用“DNS域传送”。域传送是指备份服务器从主服务器拷贝数…

多目标下改进NSGA-II算法并使用ZDT测试函数验证matlab

目标优化机械臂轨迹&#xff0c;不知道NSGA-II算法改进后到底有没有效果&#xff0c;需要用测试函数进行验证&#xff0c;附matlab代码 参考多目标优化NSGA-II的实现&#xff08;MATLAB完整代码&#xff09;_nsga2 matlab_羽丶千落的博客-CSDN博客 目录 1.复制所有matlab代码…

STM32速成笔记—低功耗模式

文章目录 一、STM32低功耗模式介绍二、睡眠模式2.1 进入睡眠模式2.2 退出睡眠模式 三、停止模式3.1 进入停止模式3.2 退出停止模式 四、待机模式五、程序设计 一、STM32低功耗模式介绍 STM32提供了一些低功耗模式。默认情况下&#xff0c;系统复位或上电复位后&#xff0c;微控…

html中表格

一、table标签 参数说明 实例 <body><table border"1" align"center" width"300" height"200" cellspacing"10"><tr><td>1.1</td><td>1.2</td><td>1.3</td></t…