完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
官方例子好像都是中断的,能不能通过轮询的方式收发?
顺便能不能说下中断发送的原理,不是很懂。。之前stm8也一直用的轮询方式。。。。 char getCharacter (void) { while (RI != 1) {;} chr = SBUF RI = 0; return chr; } 中断都可以,轮训更行。 UINT8 Receive_Data_From_UART0(void) { UINT8 c; while (!RI); c = SBUF; RI = 0; return (c); } void Send_Data_To_UART0 (UINT8 c) { ti = 0; SBUF = c; while(TI==0); } |
|
相关推荐
1个回答
|
|
可以通过轮询的方式实现N76E003的串口收发,只需要在程序中不断查询RI(接收中断标志位)或TI(发送中断标志位)的状态即可。当RI或TI被置为1时,表示接收或发送操作已经完成,可以读取或继续发送下一个数据。但是,轮询方式的实时性不如中断方式高,容易导致延迟或丢数据,因此建议还是使用中断方式。
中断方式的原理是,在串口接收到数据或发送完数据时,会触发相应的中断,CPU会立即停止当前操作,跳转到中断服务函数(ISR)中执行对应的操作。在ISR中,可以读取接收缓冲区里的数据或向发送缓冲区中写入数据,完成相应的收发操作后,清除中断标志位,然后返回主程序继续执行。由于中断响应速度非常快,可以保证数据的实时性和准确性。 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:31 , Processed in 0.953423 second(s), Total 82, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号