由于我们选用的LoRa终端模组ASR6505集成的MCU是STM8L, 因此有必要对其有一些基本的认识,以便于接下的编程和代码的理解。
目录:
1. 什么是STM8 MCU
2. STM8与STM32的主要区别
3. STM的主要功能特性
4. STM8内部的功能模块
5. STM8的内存地址映射
6. STM8的中断向量表
STM8系列是意法半导体公司(ST)生产的8位的单片机。该型号单片机分为STM8A、STM8S、STM8L三个系列。
STM8A:汽车级应用、STM8S:标准系列、STM8L:超低功耗MCU。
内核:ST自研的高级STM8内核,具有3级流水线的哈佛结构
指令集: CISC复杂指令集(相对于精简指令集RISC, 如ARM)
存储器
程序存储器:8K字节Flash;10K 次擦写后在55°C环境下数据可保存20年
数据存储器:640 字节真正的数据
EEPROM;可达30万次擦写
RAM:1K字节
虽然STM8和STM32都是意法半导体公司(ST)生产的同系列的微处理器,但其实其CPU架构和指令集是完全不同的。也正因为如下,STM8需要特定的集成开发工具和特定的C语言编译器,也正因为如此,集成开发工具是IAR for STM8,而不是IAR for ARM.
STM8 CPU 是一种专有架构,它保持了以前的 STM7 内核的传统,同时在 8 位 CPU 效率和代码密度方面实现了突破。
STM32 围绕行业标准 ARM® Cortex-M 32 位内核构建,并受益于与 ARM 处理器有关的开发工具和软件解决方案的完整生态产业环境。
尽管它们被认为是两种完全不同架构的处理器,但考虑到同一家公司的产品,在用户使用习惯的一致性,它们在设计方面实际有许多相似之处,下面对比STM8S 和 STM32F1 (Cortex-M3)这两种内核异同:
从上述可以看出,STM8和STM32除了指令集有大的差别,在设计上,保持了极大的继承性和一致性,主要的差别主要在其性能上的差别。
两种内核均基于哈佛架构,它们采用 3 级流水线执行,可将执行时间降至最低,
对于 STM8S,时钟速度高达 24 MHz,对于 STM32F1系列,时钟速度高达 72 MHz。
在代码密度方面,它们均有优异的表现,这归功于 STM8S 系列的 8 位 CISC 指令集以及 STM32F1系列的 Cortex 内核引入的 16 位 Thumb-2 模式。
Flash:用于存储程序=> 64K. 因此STM8很难实现大的程序代码或协议栈代码。
Data EEPROM: 用于存储用户的永久性配置数据=>2K-1K.
RAM: 用于存放程序执行过程中的动态数据=>2K
LCD: LCD接口
Timers:定时器,由于STM很难支持OS, 因此定时的功能通常需要通过硬件定时器完成, STM8L提供了1个8bit的基本定时器,3个16bit的通用定时器,一个16bit的高级控制的定时器。
定时器在单片机编程中其着非常重要的功能。
连接外设的接口:2个SPI master, 1个I2C master, 2-3个 uart串口控制器。
GPIO: 通用的输出输入接口。
ADC和DAC: 数子到模拟信号转换和模拟信号到数字信号的转换
Comparators:比较器,用来比较两个数据的大
watchdog:软件看门狗,防止程序死机,需要程序定期的喂狗,确保看门狗不复位系统。
CPU的频率:16MHz
操作电压:低功耗电压1.8-3.6V
操作温度:-40- +85/105/125.
STM8 core通过标准的内部的地址、数据、控制总线连接所有外设的控制器,并通过统一编址的地址来访问的。
在上图中,可以看出,程序是存放在0x00 8000-0x01 7FFF 8K的Flash地址空间内。
特别需要注意的是,位于0x00 8000-0x00 807F处的128字节的复位和中断向量表也存放于此。
包括程序的复位后的第一条指令存放于:0x00 8000。
因此,STM8的终端服务程序在Flash(而不是RAM)中的位置,是在编译的时候就确定下来的,而不是动态加载的。
参考:
(1)STM8单片机入门:https://wenku.baidu.com/view/16dae952ac51f01dc281e53a580216fc710a5316.html
(2)STM8L官网:https://www.st.com/zh/microcontrollers-microprocessors/stm8l152m8.html
(3)STML官网手册:https://www.st.com/resource/en/datasheet/stm8l152m8.pdf
(4)CSDN下载:https://download.csdn.net/download/HiWangWenBing/12666208