从STM8S转到STM8L开发时要注意的几个问题 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参考技术手册具体核对验证为宜。 文章出处: 茶话MCU |
非常清晰明了,感谢! |
感谢! |
感谢分享 |
ganxie fen xiang xiexie ting shuo ping lun keyi de jifen .... |
正在使用stm8作为从机与esp32进行i2c通讯,但是发现主机扫描的i2c地址与stm8从机设置的i2c地址不一样,请问如何解决?
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
stm8s批量烧录问题
IAR无法跳转定义,系统库文件文件名后有[RO]
stm8l050j3
STM8S标准库TIM1编码器功能不计数,请大师帮我看看