打印
[Kinetis]

KL25与lcd液晶显示问题!

[复制链接]
楼主: 774729254
手机看帖
扫描二维码
随时随地手机跟帖
21
774729254|  楼主 | 2013-11-28 11:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
FSL_TICS_Robin 发表于 2013-11-28 10:26
你的串口中断程序现在是否能正常工作了?
标志是否成功清除,是否还会因为这问题重复进入中断?
中断函数 ...

我按照你说的方法试了,使用全局变量把数据传到主函数,中断里面,先关闭接受使能,再打开,还是无法显示,只有吧显示放在中断里面才行

使用特权

评论回复
22
FSL_TICS_Robin| | 2013-11-28 11:53 | 只看该作者
你主函数是否有根据中断函数给出标志,去调用显示函数呢?

使用特权

评论回复
23
774729254|  楼主 | 2013-11-28 13:27 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 11:53
你主函数是否有根据中断函数给出标志,去调用显示函数呢?

没有,我直接定义了一个全局数组,那是不是标志也要定义成全局变量了啊?标志是不是表示是否正常接收,
如:flag=uart_reN(UART_1,32,buff);//功能概要:串行 接收n个字节
/函数返回:函数执行状态 0=正常;非0=异常

使用特权

评论回复
24
774729254|  楼主 | 2013-11-28 13:45 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 11:53
你主函数是否有根据中断函数给出标志,去调用显示函数呢?

我设了标志位,还是没有显示

使用特权

评论回复
25
FSL_TICS_Robin| | 2013-11-28 13:47 | 只看该作者
对呀,只有根据标志来,主函数才知道何时需要调用LCD显示。
这样你LCD显示就不用放在中断函数中,中断函数的执行时间也就会大大缩短。
这样就能防止你进中断后因为禁止串口接收中断、执行时间又长,期间外部向串口发来很多字符需要进中断可被禁止而错过某些字符。

使用特权

评论回复
26
774729254|  楼主 | 2013-11-28 13:48 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 11:53
你主函数是否有根据中断函数给出标志,去调用显示函数呢?

KL25不像51单片机,直接从缓存读取数据,我是根据他写好的底层函数直接调用的,我现在也搞不清楚他的串口中断到底是怎么工作的。。。

使用特权

评论回复
27
FSL_TICS_Robin| | 2013-11-28 15:17 | 只看该作者
我去看了下你提到的程序,就是苏大SD-FSL-KL25-CD(V1.2)下面KL25-UART(int)-20130508例程咯?
串口中断函数就用

每次flag==0其实就是收到一个串口字符,你用个静态循环变量及全局数组存ch,每次进这中断函数静态循环变量+1,数组存满32个就将全局变量(NeedLCDShow=1)。(记得计满32个后清除静态循环变量)
主函数中查询NeedLCDShow变量然后显示。

使用特权

评论回复
28
774729254|  楼主 | 2013-11-28 15:17 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 13:47
对呀,只有根据标志来,主函数才知道何时需要调用LCD显示。
这样你LCD显示就不用放在中断函数中,中断函数 ...

请问飞思卡尔有KL25相关的例程吗,可以给我借鉴借鉴的!

使用特权

评论回复
29
FSL_TICS_Robin| | 2013-11-28 15:23 | 只看该作者
本帖最后由 FSL_TICS_Robin 于 2013-11-29 17:34 编辑

很不幸 飞思卡尔官网的KL25_SC中CW没有单独uart例程。
其实你这个例程我看了 很清晰啊写的。
KL25也没见接收FIFO,所以还是老样子来个字符进次中断读下缓冲区。
你根据我写的去改下,应该就ok了。

使用特权

评论回复
30
FSL_TICS_Robin| | 2013-11-28 15:31 | 只看该作者
你用别人的库函数要先看清楚函数定义啊。
你照着图片写下看是否成功,我这没苏大硬件不好调。

使用特权

评论回复
31
774729254|  楼主 | 2013-11-28 15:43 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 15:17
我去看了下你提到的程序,就是苏大SD-FSL-KL25-CD(V1.2)下面KL25-UART(int)-20130508例程咯?
串口中断函数 ...

如果我想随机接收N个字符串就不能用这个方法了吧?就像串口调试工具一样

使用特权

评论回复
32
FSL_TICS_Robin| | 2013-11-28 16:00 | 只看该作者
之前你给我的LCDShow不就是32个字符一显示的吗? 所以我才把数组大小改成32的。
你如果要每次收到就显示出来,改下LCDShow不就可以了吗?

使用特权

评论回复
33
774729254|  楼主 | 2013-11-28 16:03 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 15:31
你用别人的库函数要先看清楚函数定义啊。
你照着图片写下看是否成功,我这没苏大硬件不好调。

还是不能显示哦

使用特权

评论回复
34
774729254|  楼主 | 2013-11-28 16:11 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 16:00
之前你给我的LCDShow不就是32个字符一显示的吗? 所以我才把数组大小改成32的。
你如果要每次收到就显示出 ...

把lcdshow放在主函数,他就不显示,我试过不使用串口中断接收字符显示,直接LCDShow("12345");如果把它放在   ENABLE_INTERRUPTS;下面就不可以显示,放在上面就可以显示,主函数如图所示

QQ图片20131128161110.jpg (40.32 KB )

QQ图片20131128161110.jpg

使用特权

评论回复
35
FSL_TICS_Robin| | 2013-11-28 16:18 | 只看该作者
关闭除了串口接收中断以外的中断,再测试下

使用特权

评论回复
36
774729254|  楼主 | 2013-11-28 16:36 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 16:18
关闭除了串口接收中断以外的中断,再测试下

还是不行那个定时器我就没有用到,屏蔽了还是不行,显示放在主函数里lcd就是不显示,把它放在中断里就算是乱码也显示

使用特权

评论回复
37
FSL_TICS_Robin| | 2013-11-28 16:51 | 只看该作者
你能debug单步调试吗?
发送32个字符给串口后,看下串口中断函数是否将数组Uart1RxdBuf传递给Uart1Rxd数组。
看下NeedLCD标志是否被置1.
主程序主循环中是否查到了这个NeedLCD标志并调用LCDShow显示函数。

使用特权

评论回复
38
774729254|  楼主 | 2013-11-28 17:14 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 16:51
你能debug单步调试吗?
发送32个字符给串口后,看下串口中断函数是否将数组Uart1RxdBuf传递给Uart1Rxd数组 ...

可以进中断进行调试吗,单步调试进不了中断啊

使用特权

评论回复
39
FSL_TICS_Robin| | 2013-11-28 17:17 | 只看该作者
KL25可以设置两个断点,程序运行到断点处就能停下来。
你在收完32个字符给NeedLCD变量置1处添加一个断点,全速运行程序看能否停在那。

使用特权

评论回复
40
774729254|  楼主 | 2013-11-28 19:08 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-28 17:17
KL25可以设置两个断点,程序运行到断点处就能停下来。
你在收完32个字符给NeedLCD变量置1处添加一个断点, ...

你有KL25在cw10.3调试的说明吗,我不怎么会用哦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则