从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 .... |
请教 stm8s 复位电路 和VCAP电容问题
项目完成,请各位前辈指点
关于STM8S IAR写程序内存的问题
推挽输出的电压
请教STM8S003F3P6 eeprom和真开漏输出
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
各位大佬帮忙看看 STM8S003F3U6TR 哪里使用错误了?
如何搭建环境?
新手,STM8S标准库外部中断方式连接EC11的问题
新手求教,STM8S103如何用硬件I2C定时重复读取从机的一个状态寄存器?