STM8S常见问题大杂烩

1.printf/sprintf入口参数必须是u16类型,否则打印结果不正确,很奇怪
2.u32位类型的判断if ((val%0x1000) == 0)此判断前必须强制转换,即if ((u16)(val%0x1000) == 0),否则if每次都成立。
3.空间大于32k时,把常量const强制分配到指定空间32k以内,个人把前16k都分配给const,code从32k之后开始,使用#pragma section const {iconst} ....//const变量#pragma section const {} 在STVD中增加iconst段,同时分配地址空间,在setting->Linker->category中选择input,进入之后一看便知。
4.interrupt.h和it.h中_stext重复定义,但时却报空间超了,屏蔽it.h中的定义,
5.一个工程有多个C时,一个C文件不能太大,我的一个menu.c文件,处理菜单操作的,很大,估计万行左右,编译时,cosmic每次都提示“遇到错误,自动关闭”,后来将menu.c中的移到其它c文件中,即正常,个人怀疑是单个文件不能太大。
6.使用24MHz时,必须选择1wait,说是简单,但必须先连上目标板,在,即debug后,在mcu配置中设置
7.EEPROM操作时,会关闭中断,导致我的UART都丢了,做好容错处理,还有块擦除需要在RAM中进行,使用Facpy函数,具体怎样忘记了大概差不多了,有的也忘记了,希望给正准备使用的少走点弯路,做开发,时间宝贵啊,希望大家不要在已经有人遇到的问题上花费太多时间。
我现在使用的是STM8S207RB,使用库函数,还是挺好用的,没有发现什么大的问题,就是很多和不同的地方,对类型要谨慎,尤其是u8 u16 u32类型变量之间的运算搞的不好,问题奇奇怪怪,就像第2条,希望用过的朋友继续补充!!!!!

永不止步步 发表于09-26 14:18 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号