CodeWarrior调试程序常见问题和飞思卡尔HCS12单片机编程问题

标签:
codewarrior飞思卡尔hcs12单片机编译debug |
分类: 嵌入式系统及应用 |
问题1:
现象:debug后,在调试界面右下角出现Illegal_BP的提示,点击运行按钮就会自动进入断点。
http://s13/mw690/8b838c7007b6f69c6537c&690
可能原因:codewarrior编译器运行不正确。
解决方法:我从网上查了一些关于Illegal_BP(非法断点)的提示,也有一些解决方法,比如将中断程序include之类的,但是都不行。
后来问了别人,他说新建一个工程试试,结果还是不行;然后他又建议我换个下载器,结果,果然好了!再将下载器换回来也没有问题了。
所以说这个如果程序没有问题的话那就是codewarrior编译器的问题或者是下载器的问题。所以重新连接一下下载器或者重启一下电脑可能也是可选的办法。
问题2:
现象:程序运行后不能直接复位,只能先暂停,然后才能复位。
解决方法:最后发现是复位芯片封装画错了,电源和地接反了。
问题3:
问题描述:飞思卡尔HCS12单片机同一串口的中断接收和发送是一个中断向量,那么如何区分是发送触发中断还是接收触发中断呢?
解决方法:接收时采用接收寄存器满中断,发送是发送寄存器空中断,但发送中断一般是常关的,只有要发送数据时打开,接收中断时常开。
进入串口中断程序后要先判断到底是接收中断还是发送中断。
接收子程序的判断方式是判断接收寄存器满标志位是否置1(SCI1SR1_RDRF==1),置1了就数据读出;
而发送子程序里仅判断发送寄存器空标志位是否置1(SCI1SR1_TDRE==1)是不够的,因为这时如果发送寄存器空,就会发送数据出去,但是我可能根本没有开发送中断,我还没有数据要发,所以发送子程序判断发送寄存器空标志位是否置1同时还要判断发送中断是否使能(SCI1SR1_TDRE==1)&&(SCI1CR2_SCTIE==1)。这样就可能在想法的时候发,不想发肯定就发不出去数据了。
问题4:
问题描述:向单片机下载程序时连接不到目标。即出现下图所示状况:
http://s9/mw690/8b838c704d25a20d05068&690点确定后出现:http://s13/mw690/8b838c7007b6f69c6537c&690
可能原因:codewarrior编译器运行不正确。
解决方法:重启电脑,还不行重新装codewarrior,重装时选择repair,而不是modify。
问题5:
问题描述:下载程序过程中进度条进程为33%时不再继续,即卡在了33%。
原因:单片机的RAM烧了。
解决方法:换单片机。。。。。