《STM8S使用常用问题汇总.docx》由会员分享,可在线阅读,更多相关《STM8S使用常用问题汇总.docx(7页珍藏版)》请在三一办公上搜索。
1、STM8S使用常用问题汇总 STM8S使用常用问题汇总 = 按外设模块 = = GPIO/AFIO = = Beep = 1、STM8S提供一个Beep引脚。通过简单的配置即可输出1K、2K、4K三种频率信号驱动外部蜂鸣器。 由于默认情况下Beep输出引脚PD4为TIM2_CC1功能,为此我们需要打开“Option Bytes”的AFR7选项。 打开STVP,选择你使用的MCU型号,找到Option Bytes标签。将AFR7改为Port D4 Alternate Function Beep。 菜单栏选择Program Current tab,成功后,即可正常使用Beep输出功能。 = = P
2、ower/RESET = 1、STM8S为双电源MCU,外设工作电压为3V5.5V,内核工作电压为1.8V。因MCU内部已集成1.8V 低功耗电压(LPVR)调节器,MCU工作仅需提供一个供电电源。在电源电路设计时,需要注意芯片VCAP引脚上要提供滤波电容,该电容用于对内部1.8V供电滤波,容值不小于470nF为宜,瓷片和Ta电容均可,尽量选择较低ESR(等效串联电阻值)的型号。 2、MCU芯片自带上电复位(POR)与掉电复位(BOR),工作时供电需注意POR、BOR工作范围。 1)、POR Power-On Reset 上电复位 POR的功能是在VDD电压由低向高上升越过规定的阀值(VIT+
3、)之前,保持芯片复位,当越过这个阀值(VIT+)后的一小段时间后(Reset temporization),结束复位开始取复位向量执行指令。 2)、BOR Brown-Out Reset 掉电复位 BOR的功能是在VDD电压由高向低下降越过规定的阀值(VIT-)后,将在芯片内部产生复位。 3、芯片复位地址指向0x6000(内部Bootloader存放首地址),在检查无Boot操作,PC指向0x8080地址。0x80000x807F为中断向量占用。 = = 按使用开发环境 = = STVD = 1、STVD如何输出hex文件 菜单栏 Project - Setting 打开“Post_Build
4、”标签,命令框原默认定义: chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8 输出S19格式的目标文件。 在其中增加或修改为: chex -fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8 即可输出hex格式目标文件。 生成hex文件被输出到目录 项目“Debug”目录下。 如图: (原文件名:hex.png) 引用图片 = RIDE = = = 按编译器 = = STM8 ASM = = COSMIC = 1、
5、 tiny Zero Page(0x000xFF) 申明 :tiny char a a) .bsct 在zero page区域的初始化变量 b) .ubsct 在zero page里面的未初始化变量 c) .bit - 位操作段 d) .share near - Zero page 以外的RAM区域 a) .bss - 未初始化变量区域; b) .data - 已初始化变量区域; c) .const - 常量区域 far .fdata (large variable) .fconst .text EEPROM 2、 Placing Data Objects in Short Range Mem
6、ory tiny char c; #pragma space extern tiny Placing Data Objects in Long Range Memory near char ext; #pragma space extern near Placing Data Objects in the EEPROM Space eeprom char var; #pragma space extern eeprom near Note:The near modifier is necessary because the eeprom is located outside the zero
7、page. 3、 Memory Models for code smaller than 64K Stack Short (mods0) - Global variables are defaulted to short range Any global object in long range will have to be accessed explicitly with the near modifier unless accessed through a pointer. Stack Long (modsl0) - Global variables are defaulted to l
8、ong range Any object in short range will have to be accessed explicitly with the tiny modifier. Memory Models for code larger than 64K Stack Short (mods) - Global variables are defaulted to short range Any global object in long range will have to be accessed explicitly with the near modifier unless
9、accessed through a pointer. Stack Long (modsl) - Global variables are also defaulted to long range Any object in short range will have to be accessed explicitly with the tiny modifier 4、变量地址的绝对定位: char acia 0x20; #define acia *(char *)0x20 struct acia char status; char data; acia 0x6000 Note :that C
10、OSMIC C does support the pointer and #define methods of implementing I/O access. 5、内嵌汇编 1)、#pragma asm / #pragma endasm 2)、#asm / #endasm 3)、_asm(rim) #pragma asm Extern char test; XREF asmvar void func(void) #pragma endasm if (test) #asm /* no need for */ SCF ;Set carry bit RLC asmvar ;Access assembler variable #endasm else test = 1; 6、