STM8S103F3P6 开发环境笔记
STM8S103F3
产品手册 https://www.st.com/resource/en/datasheet/stm8s103f2.pdf
内核
- 16 MHz advanced STM8 core with Harvard architecture and 3-stage pipeline 16MHz, 哈佛结构, 三级流水线
- Extended instruction set
存储
- Program memory: 8 Kbyte Flash; data retention 20 years at 55 °C after 10 kcycle 程序8K字节, 可擦写1万次
- Data memory: 640 byte true data EEPROM; endurance 300 kcycle 数据640字节, 可擦写30万次
- RAM: 1 Kbyte 内存1K字节
时钟, 重置和电源管理
- 2.95 to 5.5 V operating voltage 支持2.95V到5.5V的电压
- Flexible clock control, 4 master clock sources
- Low power crystal resonator oscillator
- External clock input
- Internal, user-trimmable 16 MHz RC 可调节的内部16MHz振荡源
- Internal low-power 128 kHz RC 低功耗内部128KHz振荡源
- Clock security system with clock monitor
- Power management:
- Low-power modes (wait, active-halt, halt)
- Switch-off peripheral clocks individually
- Permanently active, low-consumption poweron and power-down reset
中断管理
- Nested interrupt controller with 32 interrupts
- Up to 27 external interrupts on 6 vectors
时钟
- Advanced control timer: 16-bit, 4 CAPCOM channels, 3 complementary outputs, dead-time insertion and flexible synchronization
- 16-bit general purpose timer, with 3 CAPCOM channels (IC, OC or PWM)
- 8-bit basic timer with 8-bit prescaler
- Auto wake-up timer
- Window watchdog and independent watchdog timers
通信接口
- UART with clock output for synchronous operation, SmartCard, IrDA, LIN master mode
- SPI interface up to 8 Mbit/s
- I2C interface up to 400 kbit/s
ADC转换接口
- 10-bit, ±1 LSB ADC with up to 5 multiplexed channels, scan mode and analog watchdog 5个10位ADC
I/Os
- Up to 28 I/Os on a 32-pin package including 21 high sink outputs
- Highly robust I/O design, immune against current injection
Unique ID
- 96-bit unique key for each device
硬件
ST-Link V2 用于烧录

STM8S103F3P6 开发板

开发板电路图

接线
ST-LINK和开发板的SWIM口是一一对应的, 直接连到开发板的同名PIN
ST-LINK-V2 STM8S103F3
SWIM -> SWIM
RST -> NRSt
VCC -> 3V3
GND -> GND

软件
ST Visual Develop (STVD) 和 STVP(ST Visual Programmer)
https://www.st.com/en/development-tools/stvd-stm8.html
- STVD是开发工具, 当前版本是4.3.12
- STVP是烧录工具, 当前版本是4.3.1
Cosmic C Compiler
https://www.cosmicsoftware.com/download_stm8_free.php
需要注册, 安装后需要注册获得 license 文件, 并放到安装目录下
开发工具库 SPL
- ST Microelectronics 提供的原始SPL https://www.st.com/en/embedded-software/stsw-stm8069.html
- GitHub 上第三方维护的 STM8S103F3_SPL(推荐) https://github.com/CircuitDigest/STM8S103F3_SPL
开发
创建项目
打开 STVD
- File -> WorkSpace, New Workspace 输入 Workspace 名称, 项目名和路径
- 创建项目, 注意在路径中增加子目录给项目, 否则项目会和Workspace生成到同一个目录下
- 设置工具链: 选择STM8 Cosmic, 指定toolchains到对应的目录, 默认的目录为
C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 - 选择芯片型号, 例如对于 STM8S103F3P6 选择 STM8S103F3P, 然后点 Select 按钮, 会出现在下面的 Selected MCU 中, 然后点 OK
建好后能看到项目结构下有三个目录Source Files, Include Files 和 External Dependencies, 在 Source Files 下创建了 main.c 和 stm8_interrupt_vector.c 这两个文件
这时候直接按 F7 检查是否能正确编译
添加SPL
将下载的SPL的 inc 和 src 目录解压到项目目录下, 目录结构如下
.
│ main.c
│ stm8_interrupt_vector.c
├─Debug
├─Release
└─STM8S103F3_SPL
├─inc
│ stm8s.h
│ stm8s103_ADC.h
│ stm8s103_LCD_16x2.h
| ...
│ stm8s_uart1.h
│ stm8s_wwdg.h
│
├─src
│ stm8s_adc1.c
│ stm8s_awu.c
│ ...
│ stm8s_tim2.c
│ stm8s_uart1.c
│ stm8s_wwdg.c
│
├─stm8s103 Libraries
└─Tutorials
也可以SPL放到项目其他目录下, 位置无所谓, 因为文件是否包含是通过STVD的项目配置控制的.
- 在STVD中, 在项目结构下创建 SPL Inc 目录和 SPL Src 目录
- 将STM8S103F3_SPL/inc下的.h文件添加到项目的 SPL Inc
- 将STM8S103F3_SPL/src下的.c文件添加到项目的 SPL Src
测试代码
修改 main.c, 下面的代码会驱动板载LED(B5)闪灯
#include "stm8s.h"
void delay (int ms) //Function Definition
{
int i = 0;
int j = 0;
for (i=0; i<=ms; i++)
{
for (j=0; j<120; j++) // Nop = Fosc/4
_asm("nop"); //Perform no operation //assembly code
}
}
main()
{
GPIO_DeInit(GPIOB); // prepare Port B for working
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_SLOW);
while (1)
{
GPIO_WriteReverse(GPIOB,GPIO_PIN_5);
delay (100);
}
}
编译
直接按 F7 编译
Debug
设置
- 在ST Visual Develop中, 点击 Debug instrument -> Target Settings
- Debug Instrument Selection 选择 Swim ST-Link
- 勾选 Restart the application with Swim Off on stop debug
- Target Port Selection 保留默认的 usb://usb
- 勾选 Show the selected target notification at start of debugging session
- 点击OK
开始Debug
- 点击图标栏中的蓝色 D 图标, 或者菜单中的 Debug -> Start Debugging 开始 Debug
- 弹出提示选择Target, 如果有设置多个则选择 Swim ST-Link, 点击OK
- ST Visual Develop 会将程序写入目标开发板, 然后进入Debug状态, 程序停留在第一行
这时候就可以进行debug了
- 在代码行号右边点左键, 可以增加断点
- 按 F5 往下继续执行 (直到遇到断点)
- 按 F10 单步运行, Alt + F10 汇编单步运行, Ctr + F10 运行到光标当前位置
- 按 F11 进入方法, Ctr + F11 跳出方法
退出Debug
点击图标栏或者菜单中的 Stop Debugging 退出 Debug
单独烧录
运行STVP
点击 Configure -> Configure ST Visual Programmer, 选择 ST-LINK + USB + SWIM + STM8S103F3
在STVP中, 打开项目 Debug 目录下的 .s19 文件, 写入 PROGRAM MEMORY
写入后程序不运行的解决
写完后ST-LINK亮红灯, 并不会自动重启, 此时在STVP中打开Configure对话框点击一下确认, 就会变回蓝灯, 程序就会开始运行
The device is protected解决方法
在STVP软件中, 在"PROGRAM MEMORY"和"DATA MEMORY"界面用Ctrl+R读出数据, 提示"The device is protected"
- 右侧主面板上切换到"OPTION BYTE"页
- 在表格的ROP选项, 选择"read out Protection OFF"
- 菜单栏点击 Program -> Current tab 保存配置, 配置写入之后就解开写保护了
- 回到"PROGRAM MEMORY"和"DATA MEMORY"界面, 用
Ctrl+R就可以读出数据了
参考
- 官方产品页 https://www.st.com/en/microcontrollers-microprocessors/stm8s103f3.html
- STM8环境搭建和编译, 烧录 https://circuitdigest.com/microcontroller-projects/getting-started-with-stm8s-using-stvd-and-cosmic-c-compiler
- STM8的GPIO https://circuitdigest.com/microcontroller-projects/gpio-functions-on-stm8s-using-cosmic-c-and-spl-blinking-led-with-push-button
- https://www.instructables.com/STM8s-Breakout-Board-ST-Link-V2-Connection-Failure/
STM8S103F3P6 开发环境笔记的更多相关文章
- Java开发环境笔记
在配置环境变量中 设置Java_home: 一是为了方便引用,比如,jdk安装在c:\jdk16.0目录里,则设置java_home为该目录路径,那么以后要使用这个路径的时候,只需输入%java_ho ...
- webpack4搭建Vue开发环境笔记~~持续更新
项目git地址 一.node知识 __dirname: 获取当前文件所在路径,等同于path.dirname(__filename) console.log(__dirname); // Prints ...
- 沁恒CH32V103C8T6开发环境笔记
CH32V103C8T6 CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测.指令预取机制,支持DMA. 主要参数如下 ...
- Windows下Qt5搭建Android开发环境笔记
Windows很大的特点是配置使用几乎都可以图形化进行,和Linux比起来在很多时候配置环境也要方便很多.所以,搭建Qt for Andorid也是十分简单的.需要以下工具: 1.最方便的Qt官方包, ...
- docker-ce 搭建的 lamp 开发环境笔记
工作目录: /home/{username}/dockers/lamp 将docker容器的apache的80 映射为本地主机的81 # sudo docker pull mattrayner/lam ...
- Linux下STM32开发环境的搭建
目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...
- OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
- Android菜鸟的成长笔记(1)——Android开发环境搭建从入门到精通
原文:Android菜鸟的成长笔记(1)--Android开发环境搭建从入门到精通 今天在博客中看到好多Android的初学者对Android的开发环境的搭建不熟悉而导致不能进行学习,所以我决定自己写 ...
随机推荐
- idea使用maven工程创建web项目并支持jsp
主要要再pom文件里面添加依赖: <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> & ...
- C语言函数中的3个点 ...有什么作用
标准库提供的一些参数的数目可以有变化的函数.例如我们很熟悉的printf,它需要有一个格式串,还应根据需要为它提供任意多个"其他参数".这种函数被称作"具有变长度参数表的 ...
- 无人车系统仿真相关软件介绍-dSPACE
今天本来是想简单的介绍一下dSPACE的Automotive simulation models(简称ASM),但是想想还是把dSPACE这个公司的整个开发流程写一下.这样也可以了解一下汽车的整个软件 ...
- 微信小程序实时通讯(websocket)问题
这几天值班忙的不要不要,人工智能这块看的都是零零散散,今天就来写写小程序的实时通讯吧.小程序端://这个是连接 lianjie:function(){ var socketOpen = false / ...
- 如何利用WebSocket实现网页版聊天室
花了将近一周的时间终于完成了利用WebSocket完成网页版聊天室这个小demo,期间还走过了一段"看似弯曲"的道路,但是我想其实也不算是弯路吧,因为你走过的路必将留下你的足迹.这 ...
- ccf颁奖晚会
感想: 首先,十分感谢学校给我们参加比赛的机会,给予我们这次难能可贵的学习机会,第一次在这么大型的赛场中展现自己,我们也不免有些紧张.从最开始在线上进行模型训练,到我们不远千里在江苏进行场地的勘察,到 ...
- Java中数组的定义与使用(代码+例子)
学习目标: 掌握一维数组的使用 学习内容: 1.一维数组的定义 数组(Array),是把具有 相同类型 的多个常量值 有序组织 起来的一种数据形式.这些按一定顺序排列的多个数据称为数组.而数组中的每一 ...
- css换算rem单位
地址:https://www.freetechs.cn/tool/rem2px.html
- 移动端页面中点击input输入框的时候弹出的键盘将输入框挡住的问题
使用的是vux框架, 以为是框架问题, 后来发现是把当前页面的高度写死为了height:200%: 只要把高度去掉就能让页面自动弹到输入框的上方:
- IP和静态路由技术概述
1. IP地址的构成 IP地址:32比特的二进制数字,通常采用点分十进制方式表示. IP地址由两部分组成. 网络号码字段(Net-id)用于区分不同的网络.网络号码字段的前几位成为类别字段(又称为类别 ...