今天搞得N晚,为的就是实现AVR的USART通信,以前自己做过,但是印象不深刻,现在从新再来过的时候,发现原来自己还有很多的不细心,就比如说,现在遇到的一个问题,AVR的JTAG和USART的不兼容,害得我不得不拔掉仿真器才能看见USART的效果,这样就不能单步调试了,难怪我用JTAG查看AVR的寄存器的时候,有那么多的错误,本来自己配置的寄存器是0x32的,没想到JTAG读出来的数据却是0x00~~~真的不耐了~~AVR果断不像STM32那样好用~~~
还有就是一个很变态的问题,在这里也mark一下!!!就是USART进入接收中断的时候,下面这两个绝对是害我搞得这么晚 的元凶!!!
if((Stata&(BIT(2)|BIT(3)|BIT(4)))==0)
if(0==Stata&(BIT(2)|BIT(3)|BIT(4)))
很多书上都说做相等处理的时候,最好把0==发在前面,以防出现赋值情况,但是这里却只能用
if((Stata&(BIT(2)|BIT(3)|BIT(4)))==0)
这个是我调了老半天才发现的自以为是的错误~~哎,以后还得多注意留心呀!!!