完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在51中我们常用ti来认为地"手动触发"发送中断,使程序未等发送结束就会进入
串口的发送中断. 即TI = 1;//"手动触发"发送中断 这种"手动触发"发送中断机制的最大好处是发送中断处理程序与发送命令程序分离.互不干扰,发送命令程序也不需要知道发送是如何进行或实现的. 在LPCARM中,俺模拟51实现了类似功能: VIC->SoftInt = (1 << VICIntSel_UART0);//软件中断模拟激活UART0中断 在AVR上实际也能实现如此功能,如下图所述. UCSRB |= (1 << UDRIE);//"手动触发"发送中断(发送数据寄存器空中断) 在中断中处理如下: #pragma vector="USART"_UDRE_vect extern "C" __interrupt void UartTxUDREISR(void) { if (Uart.SendWritePtr != Uart.SendReadPtr) { UDR = Uart.SendBuffer[Uart.SendReadPtr ++]; UCSRB |= (1 << UDRIE); } else { UCSRB &= ~(1 << UDRIE); } } #pragma vector="USART"_TXC_vect extern "C" __interrupt void UartTxISR(void) { if (Uart.SendWritePtr != Uart.SendReadPtr) { UDR = Uart.SendBuffer[Uart.SendReadPtr ++]; UCSRB |= (1 << UDRIE); } } 总结: 这种"手动触发"的好处可以不必在发送处要在发送缓冲区内取出首字节 来发送出去,这样我们就没必要知道缓冲区的读写指针的位置和大小等. |
|
相关推荐
|
|
非科班也能玩转Android应用,体验QT跨平台能力-迅为RK3568开发板
465 浏览 0 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件分享之最小系统原理
691 浏览 0 评论
1767 浏览 0 评论
Cortex-A55 处理器到底什么来头?创龙教仪一文带您了解
1030 浏览 0 评论
RK3568 + OpenCV 会碰撞出什么火花?案例详解:2-1 基于OpenCV的画线实验
756 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 16:44 , Processed in 0.967762 second(s), Total 36, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号