你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S的printf问题和解决办法

[复制链接]
watershade 发布时间:2018-11-24 18:56
最近在研发一个小产品,因为成本压力,所以开始入坑STM8.对于一个STM32用惯的人,忽然用STM8,资源有点捉襟见肘,总是担心资源不够用。这是外话,暂且不表。今天就来讲个小问题。大家都知道STM8通常是使用STVD或者IAR开发的,而我使用的就是IAR。然后使用vs code来代理IAR的工程,这样用起来顺手许多。而开发STM8有人用汇编,有人用C。我使用的是C。属于大多数,毕竟汇编几天时间可不能十分熟悉。使用C有人用库,有人不用库。我是后者,使用的是官网下载的库。
这个库还算比较简单,唯一的问题是,很多外设的初始化要写一长串。非常繁琐。官网的库里面有examples。其中的一个关于UART的example就是printf。
手边使用的是STM8105K4,这款单片机其实资源不少。上printf没有问题。IAR关于这一点的支持也很好。
其实printf的支持十分简单,官方的工程中就是:1、配置HSI 2、UART DeInit外设复位 3、UART初始化。 这一步甚至都没有配置GPIO。但是建议还是配置一下。4、定义putchar的原型,并实现它。
工程外还需要设置IAR的配置。如下两图:

Capture1.JPG 图1
Capture2.JPG 图2

图1通常新建工程和默认是Normal,有人建议使用ptintf的时候修改。但是个人觉得不用修改。使用normal的时候不支持multibyte.(multibyte暂时不知道是什么意思,不知道是不是指字符串类的多字节,反正暂时使用它来发送uint16_t都没问题。关于multibyte回头查手册看一下,或者坛友们在帖子里面回应)
而图2将printf和scanf分开设置,还分为FULL,LARGE,SMALL,TINY。而且每一种还有是否支持multibyte。图三还可以设置数学符号,比如支不支持三角函数和指数运算等。这些对于资源有限的外设很有用。这里就不再赘述。

那言归正传,讲一下我调试遇到的问题。起初我按照官网的example做完之后。要打印一句话:
  1. printf("A2 is %d \n\r", (int16_t)A2_Value);
复制代码
这段话很简单。A2_Value采集的是ADC channel2的数据。但是奇怪的事情发生了,ADC的数据都是正数,而且因为是10bits,所以不会超过1023的。
但是我却收到了一段难以理解的数字:
Capture3.JPG
-21580,而且有个警告我之前也忽略了,提示printf隐性声明。
起初我忽略了这条警告。尝试了各种修改都不成功。但是我忽然注意官方工程还有一个小细节,这里叫做第5步骤吧:包含基本输入输出命令。
  1. #include "stdio.h"
复制代码
就是这一句加上之后警告也没有了,数据也正确了。Happy Ending
Capture4.JPG

魔鬼存在细节中,我的两个小时就这样被魔鬼吃掉了
收藏 评论3 发布时间:2018-11-24 18:56

举报

3个回答
watershade 回答时间:2018-11-24 19:36:08
本帖最后由 watershade 于 2018-11-24 19:42 编辑

续上:关于multibytes这个多字节支持选项。起初我怀疑是中文,但是实际上并不是。我还是图1和图2的配置。直接添加中文没有问题。奇怪了。查看IAR的help,中见提到了wprintf。说明应该是指多字节标识的符号。但是和上面的实验不一致。
Capture5.JPG
这个太奇怪了。请大家有空做个实验。
附件中是官方文档,其中第102做了说明。按照理解应该是中文和其它非英语的多字节符号。但是却奇怪与实验不符合。
EWSTM8_DevelopmentGuide.pdf (4.18 MB, 下载次数: 54)

评分

参与人数 1ST金币 +20 收起 理由
STMCU + 20

查看全部评分

backup-72119 回答时间:2019-8-28 16:03:49
感谢分享经验,解决了困扰我一天的问题。
hdbgyl 回答时间:2019-9-30 10:26:51
感谢分享经验
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版