标题: IAR For STM8调用子函数后LCD1602显示异常 [打印本页]

作者: mackintoshi    时间: 2019-8-31 13:10
标题: IAR For STM8调用子函数后LCD1602显示异常
有一个LCD1602显示的问题,困扰了好几天,检查过时序,检查过延时,也检查过IAR配置,都没有问题。
一直找不到解决办法,不知有谁遇到过类似的现象没?
如果有,麻烦指点一下迷津,谢谢。
具体问题如下:

1)将LCD1602 写指令/写数据以一个子函数单独写进一个名为LCD1602.c的文件里;

2)在工程文件里将其加入到Sub_funtion子目录下

3)在LCD1602.c中创建一个LCD1602_DIS_CHAR()的子函数


4)在主函数中直接调用LCD1602_DIS_CHAR(),比如在LCD1602的第一行第一列显示字符'M',第二行第二列显示字符'X',
实际显示结果如下:



5)同样的配置,在LCD1602.c中新建一个名为show_X_M()的子函数,再在主函数中直接调用show_X_M()函数,则显示正常

这意味着,所有用LCD1602显示的指令(字符,数据等)必须写到LCD1602.c的子函数里面,再在主函数中调用该子函数才能保证LCD1602显示正常。
但如果用LCD1602显示IIC或者SPI等传递的数据,意味着这些协议也得写进LCD1602.c里面。导致程序失去了模块化的意义,不方便检查和调试。

图片中为对应步骤的截图

1.png (530.94 KB, 下载次数: 54)

1.png

example13.4.8.rar

477.36 KB, 下载次数: 3


作者: mackintoshi    时间: 2019-10-12 09:07
问题已经解决,调用各个子函数需要事先编写头文件,并将子函数内的函数名在头文件内声明




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1