查看原文
其他

从STM8S转到STM8L开发时要注意的几个问题

Miler 茶话MCU 2022-09-11

从STM8S转到STM8L开发时要注意的几个问题

整理:MilerShao

ST公司的STM8S与STM8L系列虽同属STM8内核的8位机阵容,但二者还是有较大差异。STM8S系列是标准通用型系列,而STM8L属于超低功耗系列。STM8L有更为丰富的外设和低功耗管理模式,有更低的工作电压、更宽的工作电压范围。STM8L系列在穿戴式产品和智能家居应用领域有着广泛的应用空间。

这里不对二者的差异做拓展表述,主要想给那些用过STM8S系列MCU后打算使用STM8L系列的工程师一些提醒,即从STM8S开发转向STM8L时常常可能遇到的几个问题,算是抛砖引玉。

1、STM8S 与 STM8L 两个系列的ST官方外设标准固件库是不一样的,各自有一套。另外,各自的寄存器编程手册也不一样,即参考手册不一样。

2、这个也是遇到最为频繁的问题,就是默认的外设时钟开关问题。

对于STM8S芯片而言,各个外设时钟在芯片复位后,默认就是打开的。而STM8L系列,则恰恰相反,各个外设时钟在芯片复位后,默认就是关闭的。经常有人从8S芯片转过来开发STM8L芯片时,在这里卡壳,遇到外设不工作啊,调试时相关外设寄存器根本没法设置等。



3、EXTI外部中断请求标志位问题。这个问题也是经常有人遇到的。

STM8L系列芯片里有相关外部中断请求标志位,而STM8S没有相关标志。如果STM8L中断程序里如果像STM8S那样不做相关外部中断请求标志的清除的话,后果很严重。会出现中断循环往复进入,常给人死机现象。


4、ADC启动的问题。

有一次某工程师用STM8L芯片开发程序,之前用STM8S芯片开发过产品。在编写代码时往往沿袭STM8S的写法。在用到STM8L芯片AD时,发现怎么也不工作。

查看其代码,他像很多使用STM8 MCU的工程师一样也是直接操作寄存器。因为他说是从8S的代码改过来的,我先对着STM8S的MCU参考手册比对,貌似没啥问题,再对着STM8L的ADC相关寄存器部分看了一会。 发现8S和8L芯片在AD上电后,开启AD转换的指令是不一样的。他的代码在该处有问题。

STM8L芯片在AD上电稳定后,开启AD转换是通过设置ADC_CR1里的START位,而8S芯片则不是,还是通过二次置位ADON位来启动AD转换。




最后顺便提下,对于STM8S或STM8L的ADC模块,上电开启后需要一段稳定时间,STM8S芯片需要大概7US左右,而STM8芯片需要3US左右。编程时适当注意下。

总之,STM8S系列与STM8L系列差别还是很大的,在从STM8S开发转向STM8L系列时,出现了问题不要执着于STM8S平台上用得好好的心理,最好结合STM8L参考技术手册具体核对验证为宜。


********************************************************************其它相关ST MCU应用话题,可以点击文字上方“ST MCU 信息交流”或扫描下方微信公众号加以关注,查看历史消息来选择阅读。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存