推荐阅读最新更新时间:2024-11-17 13:01
Stm8的bootloader介绍
本次应用笔记是专门为STM8的固件和系统设计者提供,他们需要实现一个内应用编程(In-application programming, IPA)特征的产品,以stm8微处理器作为研发的。Stm8是一个8位微控制器家族,并以一个flash memory 去存储用户的程序代码或者固件。(for storing the user program codeor firmware.)在为控制其被移植到最终产品上后,IAP 使得控制器可以就地更新固件。这么更新固件的有优点是微控制器能一直保持在产品里面,不用取出芯片特意给它烧录程序。更新固件的时候也不用调停机器(产品)的运行工作。(在线烧录,通过IIC,SPI,uart)。 IAP是对发布
[单片机]
STM8 内/外部时钟寄存器
STM8内部时钟寄存器(CLK_ICKR) 地址偏移值:0x00 复位值:0x01 位7:6 保留位,始终为0 位5 REGAH:活跃停机(Active Halt)模式下电压调节器关闭 由软件置位或清除。为1时,一旦MCU进入活跃停机(Active Halt)模式,主电压调节器将关 闭,从而唤醒时间将比较长。 0:活跃停机(Active Halt)模式下主电压调节器处于开 1:活跃停机(Active Halt)模式下主电压调节器处于关 位4 LSIRDY:低速内部振荡器准备就绪 由硬件置位或清除 0:LSI时钟未准备就绪 1:LSI时钟准备就绪 位3 LSIEN:低速内部振荡器使能 由软件置位或清除。如果LSI为必
[单片机]
STM8 模拟/数字转换器(ADC) 转换模式
STM8模拟/数字转换器(ADC)转换模式 ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式。 单次模式 在STM8的ADC单次转换模式中,ADC仅在由ADC_CSR寄存器的CH 选定的通道上完成一次转换。该模式是在当CONT位为0时通过置位ADC_CR1寄存器的ADON位来启动的。 一旦转换完成,转换后的数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置位,如果EOCIE被置位将产生一个中断。 连续和带缓存的连续模式 续转ADC在完成一次转换后就立刻开始下一次的转换。当CONT位被置位时即在连换模式中,将ADC设为连续模式,该模式是通过置位ADC_CR1寄存器的ADON
[单片机]
STM8芯片死锁解锁方法
gdi-error ption bytes read error:not complemented:please use a programmer. 用STVP可以恢复。 但注意烧OptionByte时,一定要设成Read Out Protection ON,才能成功。 如果设成Read Out Protection OFF,则还是不能恢复。 还要注意要用Program- Current Tab菜单命令,不能选All Tabs。 不能打开其他使用STlink的IDE。
[单片机]
STM8 symbol _assert_failed not defined (Debugstm8s_adc1.o )
symbol _assert_failed not defined (Debugstm8s_adc1.o ) 在调试STM8的时候出现了这个问题,即函数assert_failed 未定义。查找问题,在stm8s_conf.h中对void assert_failed(u8* file, u32 line) 进行了申明,确没有文件中对该函数体进行编写,因此编译时找不到该函数而出错。因为之前没有使用库文件,全部自己调用寄存器编制的程序就没有碰到这种问题。 在头文件stm8s_conf.h中对函数有引用: #ifdef USE_FULL_ASSERT /** @brief The assert_param macro is use
[单片机]
stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化
stm8s008空间大小是8K 使用的时候会出现空间不够用的情况,这个时候要对软件进行一些设置,从而优化程序大小。 1,修改优化等级,如下图所示,这样会优化掉无关的函数,将代码优化到最大程度 2,如果代码有多个数组,而ram实际空间不够使用的时候,修改下面的参数,最大修改为0xfff。 3,当二维数组定义完报错,无法容纳的时候,在数组前面加上NEAR可解决报错 例如: NEAR u8 buff = {********}; 4,当代码还是很多的时候就要从代码逻辑和代码本身一点点的扣 能用数组代替的尽量不用代码,能用u8的不用u16
[单片机]
STM8 用户启动区域(UBC)
用户启动区域(UBC)包含有复位和中断向量表,它可用于存储IAP及通讯程序。UBC有一个两级保护结构可保护用户代码及数据在IAP编程中免于无意的擦除或修改。这意味着该区域总是写保护的,而且写保护不能通过使用MASS密钥来解锁。 在ICP模式下(使用SWIM接口)可以通过修改选项字节来配置UBC的大小。UBC选项字节指定了分配在UBC中的页的数量。UBC区域的起始地址是0x00 8000。 可以通过读取UBC选项字节来获得UBC区域的大小。请参考图6,图7和图8来了解UBC区域的存储器映射。对于选项字节部分,请参考相应的数据手册了解更多的UBC选项字节的细节。 (图六:小容量STM8S的UBC区域大小) 1. UBC =
[单片机]
stm8 stm8s stm8af 485接口 modbus协议代码
本人使用stm8af62a6,stm8s和stm8af大多数是互通的,只用一个库函数 62a6只能使用uart3! 485接口是硬件,不需要管,任何硬件接线都可以实现 代码见附件,已实现通信 主函数代码,主要为初始化函数,以及modbus帧接收处理函数,帧接收处理按自己的需求自行修改,本例的处理函数为接收数据再多输出一点数据 单片机源程序如下: /****************************************************************** mian.c文件部分 **********************************************************
[单片机]