USART 串口通信
我想操作寄存器直接实现USART接收,而不是通过arduino的库函数Serial.read()。用查询的方式可以实现,但是用中断的方式怎么也不行,接收始终无法进入接收中断程序ISR( USART0_RXC_vect)。实在不知道哪里错了,请大家帮忙看看。程序代码见附件 你这附件只有一个项目文件,没有源代码,没法帮你看啊~ 哦,我已经解决了,能够进中断了,就是把中断函数的参数向量改为了ISR( USART_RX_vect)就好了,下面的这是完整的代码,但是感觉这块还有很多东西不甚清楚,比如说什么时候会进中断,中断执行后芯片会重启吗??或者还是返回中断点继续向下执行,以及在中断程序中如何设置延时??如何保证接收和发送的无差错??还望有心人指教 本帖最后由 pathletboy 于 2014-4-30 12:40 编辑
推荐你看下C:\Program Files\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp这个文件,看下arduino是如何封装的。
你的问题可以总结为
1、什么是中断
2、中断如何执行
前2者自己百度上搜索,“中断”
3、中断中不该带有任何延时程序,中断应该设计的短小精悍,能不放中断的就别放中断,中断中一般不处理逻辑代码,只是单纯的把数据收下来放到缓冲,然后在主循环,也就是Arduino的loop()中进行逻辑处理,包括延时发送等。
4、发送接收无差错需要自定义协议,只有自定义协议才能保证数据的正确完整性,可以参考下TCP/IP协议,自己实现一个简单的。
页:
[1]