STM8
文章平均质量分 86
宁静以致墨
慢下来,享受技术,找一个安静的位置
展开
-
stm8中断的学习
//PA4口中断初始化void Driver_ExtIntOn(void){ //PA4 上拉输入PA_DDR &= CLRBIT4;PA_CR1 |= SETBIT4;//下降沿触发EXTI_CR1 |= SETBIT1;EXTI_CR1 &= CLRBIT0;//开启端口中断PA_CR2 |= SETBIT4;}volatile bool Exi原创 2015-04-29 11:55:53 · 916 阅读 · 0 评论 -
STM8全局变量溢出问题解决
1、变量存储空间结构STM8S105系列CPU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share,各段的含义如下:可见, 当segment .ubsct overflow错误出现时,原创 2016-01-27 10:27:17 · 3954 阅读 · 0 评论 -
编程小记
void delayreset(void){ if (delay_reset > 0) { delay_reset--; if (delay_reset == 0) { _asm("JPF [0x8001]"); } }}表示从0x8001处开始重新启动代码。原创 2016-02-24 11:37:24 · 403 阅读 · 0 评论 -
调试STM8时经常遇到的一些问题
在调试STM8经常遇到的一些问题是代码的优化和在中断里不要使用32位的字符。在使用代码的最小编译时会遇到一些参数被优化的现象,如果代码空间充裕的话,最好使用默认的代码编译格式。在中断里使用32位的字符,会和应用程序产生冲突。比如32位的字节长度正确的值为100多,但是产生了冲突就会变成6500个。红外一直发送就是这个问题导致的。原创 2016-04-13 14:58:14 · 1484 阅读 · 0 评论 -
STM8变量的存储
@tiny - zero page(0x00-0xff) 申明:@tiny char aa).bsct - 在zero page 区域的初始化变量b).ubsct - 在zero page 里面的未初始化变量c).bit -位操作段d).share@near - Zero page 以外的RAM区域a).bss - 未初始化变量区域b).data - 已原创 2016-04-29 16:26:37 · 1082 阅读 · 0 评论 -
关于STM8上电复位和掉电复位 以及工作电压
STM8S为双电源MCU,外设工作电压为3V-5.5V,内核工作电压为1.8V。因MCU内部已集成1.8V低功耗电压(LPVR)调节器,MCU工作仅需要 提供一个供电电源。POR - Power -On Reset 上电复位 POR的功能是在VDD电压由低向高上升越过规定的阀值(VIT+)之前,保持芯片复位,当越过这个阀值(VIT+)后的一小段时间后(Reset原创 2016-04-29 16:46:37 · 10134 阅读 · 0 评论 -
STM8 GPIO模式
GPIO_Mode_In_FL_No_IT浮空输入无中断GPIO_Mode_In_PU_No_IT上拉输入无中断GPIO_Mode_In_FL_IT 浮空输入有中断 GPIO_Mode_In_PU_IT 上拉输入有中断 GPIO_Mode_Out_OD_Low_Fast 开漏-输出低-高速 Output open-drain, low level, 10MHz GPIO原创 2016-05-04 17:30:48 · 5816 阅读 · 0 评论 -
STM8 的汇编学习
学习STM8STM8 CPU中的寄存器只有6个,即A、X、Y 、SP、 PC 、CC。完成内存种的2个8位无符号数相加,结果还保存到内存中。unsigned char a,b,c;c = a + b;STM8汇编如下:LD A,$1000ADD A,$1001LD $1002,A这里假设a,b,c这3个变量分别存储在内存原创 2016-05-16 13:07:05 · 4204 阅读 · 0 评论 -
STM8中 TIME4寄存器的应用
STM8系统复位后,所有外设时钟均处于开的状态。用户可以通过清除CLK_PCKENR1或CLK_PCKENR2中的PCKEN位来关闭相应的外设是时钟。时钟分频寄存器 (CLK_CKDIVR)如果一个引脚只具有电平的输出能力,称该引脚为输出引脚或驱动引脚;如果一个引脚具有电平的输入能力,则称该引脚为输入引脚。同时具备输入和输出能力的引脚称为通用引脚。引原创 2016-05-16 14:49:26 · 2400 阅读 · 0 评论 -
STM8红外捕获解析 使用TIM1 16位高级控制定时器
TIM1 16位高级控制定时器高级控制定时器具有不同的用途:1、基本的定时。2、测量输入信号的脉冲宽度(输入捕获)3、产生输出波形(输出比较,PWM和单脉冲模式)4、对应不同的事件(捕获、比较、溢出、刹车、触发)的中断。高级控制定时器的时钟源可以是内部时钟,也可以是外部的信号,可以通过配置寄存器来进行选择。多达4个独立通道可以配置1、输入捕获原创 2016-05-16 17:12:20 · 5338 阅读 · 0 评论 -
STM8 SPI的学习
#define SPI_CS_PORT GPIOC#define SPI_CS_PIN GPIO_PIN_4#define SPI_CLK_PORT GPIOC#define SPI_CLK_PIN GPIO_PIN_5#define SPI_MOSI_PORT GPIOC#define SPI_MOSI_PIN GPIO_PIN_6#define SPI原创 2016-05-17 10:08:43 · 3532 阅读 · 3 评论 -
STM8 I2C的学习
STM8的I2C接口1、I2C模式选择接口有4种模式:从设备发送模式;从设备接收模式;主设备发送模式;主设备接收模式。默认条件下,I2C模块工作于从模式。接口在产生起始条件后自动地从从模式切换到主模式;当仲裁失败或发送STOP信号时,则从模式切换到从模式。2、通信过程主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条原创 2016-05-17 11:05:18 · 2782 阅读 · 1 评论 -
调试stvd遇到的问题
遇到这样的问题,要以管理员的身份运行STVD。这样就能够进行在线调试了。但有一个问题是在stvd程序里不能进行跳转。原创 2016-01-09 11:17:12 · 1617 阅读 · 0 评论 -
stvd不正正常工作的解决方案
刚入手STM8,感觉到了STM8丰富的片上资源与低廉的价格,感觉STM8以后肯定会比现在有更加长足的发展,在学习STM8的过程中,本人发现其开发工具ST-LINK经常会出现与开发工具stvd 4.3.1连接不上的问题,本人搜索了网上几乎所有有关的帖子和文章,按照其上面的说法去做并没有解决本人的问题,无奈之举,只能重装系统,而后,在一个月内又因为这个原因重装了数次,实在是烦了,被逼无奈,只得再次想方转载 2016-01-03 17:56:38 · 1528 阅读 · 0 评论 -
stm8编译通不过的修改笔记
C:\Program Files\COSMIC\CXSTM8_32K在project-project setting-general-root path修改为如上。原创 2015-05-29 08:37:56 · 655 阅读 · 0 评论 -
STM8的数据@near @tiny定义
总是记不住这个:stm8 stvd下near等于51的xdatatiny等于51的idata http://www.waveshare.net/article/STM8-3-1-10.htm 如何分配变量到指定的地址举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsi转载 2015-05-23 11:12:59 · 1834 阅读 · 0 评论 -
stvd软件的精确讲解
如何分配变量到指定的地址 举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100@tiny unsigned char temp_C; //定义无符号变量temp_C,由编译器自动在地址小于0x100的RAM转载 2015-07-28 13:36:43 · 3965 阅读 · 0 评论 -
STLINK找不到debug session的解决办法
如果在编译的时候出现如标题描述的问题,在debug instrument 的菜单下点击target settings 。这样就会出现如图一所示的对话框,选择swim ST-Link.。问题就此解决。原创 2015-07-29 13:30:19 · 4092 阅读 · 0 评论 -
在STVD中如何生成hex文件
在Project->settings->PostBuild选项页中,在commands栏内加入下行命令:chex –fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8 再次编译链接该项目,如果成功则会在项目输出目录中(本例是在C:\STM8_NewProject1\debug 目录下原创 2015-07-29 17:22:17 · 5644 阅读 · 0 评论 -
如何分配变量到指定的地址
unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00 unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100 @tiny unsigned char temp_C; //定义无符号变量temp_C,由编译器自动在地址小于0x100的RAM中为其分配一个地址原创 2015-07-29 19:34:31 · 2093 阅读 · 0 评论 -
STM8出现如下问题的解决方案
The command: "cxstm8 +warn +mods0 +debug -pxp -no -pp -l -iinc -iproject -i"C:\Program Files (x86)\COSMIC\CXSTM8_32K\Hstm8" -cl..\esir-th(v1.0)\ -co..\esir-th(v1.0)\ project\devinit.c" has failed, the原创 2015-07-31 16:26:59 · 4690 阅读 · 0 评论 -
STM8四路PWM配置
void pwm_color_init(void) { // uint16 v;volatile uint8 c; /*datasheet 44,opt2 Port C5 alternate function = TIM2_CH1; port C6 alternate function = TIM1_CH1; port C7 alternate function =原创 2015-10-21 12:37:36 · 3205 阅读 · 0 评论 -
不跑boot的修改
# Segment configuration - section reserved for STVD## Segment Code,Constants:#+seg .const -b 0x8880 -m 0x7000 -n .const -it+seg .const -b 0x8080 -m 0x7000 -n .const -it+seg .text -a .const -n .te原创 2015-10-21 14:40:13 · 391 阅读 · 0 评论 -
路灯修改是否加载boot的修改小纪
# Interrupt vectors file - section reserved for STVD##+seg .const -b 0x8800 -k+seg .const -b 0x8000 -kDebug\stm8_interrupt_vector.o#是否有#说明应该怎么样去哪里的地址开始加载程序# Segment configuration原创 2015-10-15 16:09:55 · 574 阅读 · 0 评论 -
STM8 AD的学习
STM8模拟/数字转换器(ADC)采样的过程一定要满足奈圭斯特采样定理,并一般要经过采样保持、量化和编码3个步骤。采样保持电路: 在A/D转换系统中的作用是保持模拟输入电压不变,以获得正确的数字量结果。量化:量化过程中所取最小数量单位成为量化单位。STM8S105xx系列基础型产品包括一个10位连续渐进式模数转换器(ADC1),提供多达10原创 2016-05-17 13:48:29 · 2956 阅读 · 0 评论