发新帖我要提问
123
返回列表
打印
[Kinetis]

KL25与lcd液晶显示问题!

[复制链接]
楼主: 774729254
手机看帖
扫描二维码
随时随地手机跟帖
41
774729254|  楼主 | 2013-11-28 19:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
FSL_TICS_Robin 发表于 2013-11-28 17:17
KL25可以设置两个断点,程序运行到断点处就能停下来。
你在收完32个字符给NeedLCD变量置1处添加一个断点, ...

中断好像就进不去的,直接跳过去了

使用特权

评论回复
42
FSL_TICS_ZJJ| | 2013-11-29 12:44 | 只看该作者
774729254 发表于 2013-11-28 19:23
中断好像就进不去的,直接跳过去了

你设置的断点是不是太多了?一共支持两个哦!多了就没用了,如果是有效断点,断点边上会出现一个小勾的。

使用特权

评论回复
43
FSL_TICS_Robin| | 2013-11-29 17:38 | 只看该作者
之前你提到的问官网是否有KL25 uart的例程,我回复有点问题。
其实KL25_SC中分别有CodeWarrior环境、IAR、Keil的。
其中CW非PE有low_power_dma_uart_demo,IAR环境的有LQRUG_uart_ex1和LQRUG_uart_ex2以及low_power_dma_uart_demo,Keil环境的有low_power_dma_uart_demo。

使用特权

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

我单步调试了,都没有NeedLCD这个变量,怎么回事啊

QQ截图20131204204516.png (10.46 KB )

QQ截图20131204204516.png

使用特权

评论回复
45
FSL_TICS_Robin| | 2013-12-5 08:41 | 只看该作者
774729254 发表于 2013-12-4 20:44
我单步调试了,都没有NeedLCD这个变量,怎么回事啊

那是我之前和你提到的,设置一个全局变量,在串口接收中断里改变这标志状态以示串口收完一串字符。
主循环里才可以通过查询该变量,得知需要调用液晶屏显示。
你自己创一个变量就行了

使用特权

评论回复
46
774729254|  楼主 | 2013-12-5 09:24 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 08:41
那是我之前和你提到的,设置一个全局变量,在串口接收中断里改变这标志状态以示串口收完一串字符。
主循 ...

我就是按照你说的做的,我发现全局变量就不在变量那一栏显示

使用特权

评论回复
47
FSL_TICS_Robin| | 2013-12-5 09:37 | 只看该作者
774729254 发表于 2013-12-5 09:24
我就是按照你说的做的,我发现全局变量就不在变量那一栏显示

那个无所谓啦,只要串口接收中断在收完后能改变这标志位就行。
结果怎么样,在串口接收完32字符后还是不能将该位置位吗?

使用特权

评论回复
48
774729254|  楼主 | 2013-12-5 12:13 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 09:37
那个无所谓啦,只要串口接收中断在收完后能改变这标志位就行。
结果怎么样,在串口接收完32字符后还是不 ...

extern uint_8 NeedLCD;
extern uint_8 k[5];

这两个我都是设的全局变量,调试时不能看到变化情况,然后我重新设了一个局部变量reflag,可以看到他被置位了。。。难道是我全局变量定义方式不对吗?

QQ截图20131205121229.png (11.03 KB )

QQ截图20131205121229.png

使用特权

评论回复
49
FSL_TICS_Robin| | 2013-12-5 12:55 | 只看该作者
774729254 发表于 2013-12-5 12:13
extern uint_8 NeedLCD;
extern uint_8 k[5];

你可以在Debug状态下选中某个全局变量,单击右键将其添加到Expression窗以便观察。


在完成以上步骤后,就可以在Expression窗中看到该变量。



使用特权

评论回复
50
774729254|  楼主 | 2013-12-5 13:33 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 12:55
你可以在Debug状态下选中某个全局变量,单击右键将其添加到Expression窗以便观察。

我试过了,全局变量都变了,与理论是一样的,,可是lcd就是不显示。。。

使用特权

评论回复
51
FSL_TICS_Robin| | 2013-12-5 13:45 | 只看该作者
你的意思是:串口接收中断在收满一串字符后将全局变量置1了,主循环也判断到该标志调用了LCDShow函数,但液晶屏就是没显示是吗?
你有在LCDShow中添加断点,查看该函数输入的数组值是否匹配你上位机发给MCU的值呢?
一旦停在LCDShow函数中的断点,可以尝试单步调试并观察LCD是否显示。

使用特权

评论回复
52
774729254|  楼主 | 2013-12-5 14:36 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 13:45
你的意思是:串口接收中断在收满一串字符后将全局变量置1了,主循环也判断到该标志调用了LCDShow函数,但液 ...

我在主函数LCDShow前设置断点,调试就没反应了,就像一直在中断里,没出来

使用特权

评论回复
53
774729254|  楼主 | 2013-12-5 14:36 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 13:45
你的意思是:串口接收中断在收满一串字符后将全局变量置1了,主循环也判断到该标志调用了LCDShow函数,但液 ...

       
        DISABLE_INTERRUPTS;
        LCDInit();
    uart_init (UART_1, BUSCLK, 9600);          //串口1初始化, 总线时钟24000Khz,波特率9600
   
   uart_send_string(UART_1, "This is UART1 INT Test!\r\n");
    uart_enable_re_int(UART_1);
   
    ENABLE_INTERRUPTS;
     if(NeedLCD==1)
                 LCDShow(k);

使用特权

评论回复
54
FSL_TICS_Robin| | 2013-12-5 14:53 | 只看该作者
774729254 发表于 2013-12-5 14:36
我在主函数LCDShow前设置断点,调试就没反应了,就像一直在中断里,没出来 ...

既然你已经能够在中断里将该标志置位了,就将中断里的断点取消掉。
并在LCDShow函数里面设置断点,看下是否跳出中断了。
记得在判断到标志位并调用LCDShow函数显示后要清除该标志位。

使用特权

评论回复
55
774729254|  楼主 | 2013-12-5 16:33 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 14:53
既然你已经能够在中断里将该标志置位了,就将中断里的断点取消掉。
并在LCDShow函数里面设置断点,看下是 ...

还是不行啊。。跳不出来显示

使用特权

评论回复
56
FSL_TICS_Robin| | 2013-12-5 17:41 | 只看该作者
774729254 发表于 2013-12-5 16:33
还是不行啊。。跳不出来显示

那你在debug时设置断点在串口接收中断里,查看UARTx_S1寄存器的RDRF位是否被清除呢?

使用特权

评论回复
57
774729254|  楼主 | 2013-12-6 15:25 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-5 17:41
那你在debug时设置断点在串口接收中断里,查看UARTx_S1寄存器的RDRF位是否被清除呢? ...

我调试时,设置断点了,没反应哦

使用特权

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

本版积分规则