[Kinetis] KL25与lcd液晶显示问题!

[复制链接]
6695|56
 楼主| 774729254 发表于 2013-11-28 19:23 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-11-28 17:17
KL25可以设置两个断点,程序运行到断点处就能停下来。
你在收完32个字符给NeedLCD变量置1处添加一个断点, ...

中断好像就进不去的,直接跳过去了
FSL_TICS_ZJJ 发表于 2013-11-29 12:44 | 显示全部楼层
774729254 发表于 2013-11-28 19:23
中断好像就进不去的,直接跳过去了

你设置的断点是不是太多了?一共支持两个哦!多了就没用了,如果是有效断点,断点边上会出现一个小勾的。
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。
 楼主| 774729254 发表于 2013-12-4 20:44 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-11-28 16:51
你能debug单步调试吗?
发送32个字符给串口后,看下串口中断函数是否将数组Uart1RxdBuf传递给Uart1Rxd数组 ...

我单步调试了,都没有NeedLCD这个变量,怎么回事啊
QQ截图20131204204516.png
FSL_TICS_Robin 发表于 2013-12-5 08:41 | 显示全部楼层
774729254 发表于 2013-12-4 20:44
我单步调试了,都没有NeedLCD这个变量,怎么回事啊

那是我之前和你提到的,设置一个全局变量,在串口接收中断里改变这标志状态以示串口收完一串字符。
主循环里才可以通过查询该变量,得知需要调用液晶屏显示。
你自己创一个变量就行了
 楼主| 774729254 发表于 2013-12-5 09:24 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-5 08:41
那是我之前和你提到的,设置一个全局变量,在串口接收中断里改变这标志状态以示串口收完一串字符。
主循 ...

我就是按照你说的做的,我发现全局变量就不在变量那一栏显示
FSL_TICS_Robin 发表于 2013-12-5 09:37 | 显示全部楼层
774729254 发表于 2013-12-5 09:24
我就是按照你说的做的,我发现全局变量就不在变量那一栏显示

那个无所谓啦,只要串口接收中断在收完后能改变这标志位就行。
结果怎么样,在串口接收完32字符后还是不能将该位置位吗?
 楼主| 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
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窗以便观察。
Add Expressions 2.jpg

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


 楼主| 774729254 发表于 2013-12-5 13:33 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-5 12:55
你可以在Debug状态下选中某个全局变量,单击右键将其添加到Expression窗以便观察。

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

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

我在主函数LCDShow前设置断点,调试就没反应了,就像一直在中断里,没出来
 楼主| 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);
FSL_TICS_Robin 发表于 2013-12-5 14:53 | 显示全部楼层
774729254 发表于 2013-12-5 14:36
我在主函数LCDShow前设置断点,调试就没反应了,就像一直在中断里,没出来 ...

既然你已经能够在中断里将该标志置位了,就将中断里的断点取消掉。
并在LCDShow函数里面设置断点,看下是否跳出中断了。
记得在判断到标志位并调用LCDShow函数显示后要清除该标志位。
 楼主| 774729254 发表于 2013-12-5 16:33 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-5 14:53
既然你已经能够在中断里将该标志置位了,就将中断里的断点取消掉。
并在LCDShow函数里面设置断点,看下是 ...

还是不行啊。。跳不出来显示
FSL_TICS_Robin 发表于 2013-12-5 17:41 | 显示全部楼层
774729254 发表于 2013-12-5 16:33
还是不行啊。。跳不出来显示

那你在debug时设置断点在串口接收中断里,查看UARTx_S1寄存器的RDRF位是否被清除呢?
 楼主| 774729254 发表于 2013-12-6 15:25 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-5 17:41
那你在debug时设置断点在串口接收中断里,查看UARTx_S1寄存器的RDRF位是否被清除呢? ...

我调试时,设置断点了,没反应哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部