初级会员

- 积分
- 112
- 金钱
- 112
- 注册时间
- 2013-7-9
- 在线时间
- 6 小时
|
5金钱
在调试CAN通信,使用串口4进行调试信息的打印,一直打印的很欢乐,但是在某一次修改后(与CAN相关的代码)烧录发现不能打印了,仿真发现程序停在了发送等待可能的原因即验证方法如下:
1、串口可能坏了,换一块板子测试,出现同样的问题,排除硬件损坏的可能性
2、CAN代码影响了UART(虽说有点扯淡),屏蔽所有的CAN代码,只留下与串口打印相关的东西,便衣下载仿真,依然是这个问题排除
3、是不是printf()函数在捣鬼?不使用printf,直接使用如下语句 while((UART4->SR&0X40)==0); UART4->DR = (u8) ch;,仍然是这个问题,排除
4、我没辙了
调试时的现象
在MDK上查看USART相关的寄存器,程序一开始时TC(transmit complete)值为1,在写入新数据后置0,这是正常的,发现在写入之后DR寄存器 值不变一直是0,怀疑是不是没有正常的写入数据,但是一想,DR寄存器包含两个物理寄存器,一个用于写,一个用于读,所以我们看到的DR应该是 用于读的,故看不到我们写进去到的值,是这样吗?
各位大神,我实在是没有调试的思路了为什么串口突然 就不行了呢?可能是什么原因呢
|
|