完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大佬,我写了一个串口发送字符串的程序,但是总是总是发送不出来,找了半天没找到原因,感觉是陷入中断循环了,代码如下:
unsigned char TXBuffer[5]={'a','b','c','d','e'}; unsigned char UART_Flag = 0; unsigned char DataToBeSent[5]; unsigned char DataPointer=0; void sendstring(unsigned char *ptr) { unsigned char j=0; if(UART_Flag==0) { UART_Flag=1; for(j=0;j<5;j++) { DataToBeSent[j] = *ptr++; } USART2->TDR = DataToBeSent[0]; DataPointer=1; } } 中断代码: extern u8 UART_Flag; extern u8 DataToBeSent[5]; extern u8 DataPointer; void USART2_IRQHandler (void) { if (USART_GetFlagStatus(USART2,USART_FLAG_TC) ==SET) { if(UART_Flag == 1) { USART2->TDR = DataToBeSent[DataPointer++]; if(DataPointer>(5-1)) { UART_Flag = 0; } } USART_ClearITPendingBit(USART2,USART_IT_TC); } } |
|
相关推荐
8个回答
|
|
|
|
|
|
找个例程对照修改比较好
|
|
|
|
我跑完样例,再参考了别的代码写的,就是看了半天不知道错在哪 |
|
|
|
|
|
|
|
发送的时候没有等待发送完毕??你看看例程 发送的时候是不是会有个while循环来等待发送标志位置位
|
|
|
|
发送完了要判断清标志位的
|
|
|
|
这么简单的问题
|
|
|
|
到处是例程,参考啊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1365 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1358 浏览 0 评论
STM32串口接受中断使用C++STL中的queue导致所有中断失效
8895 浏览 1 评论
3648 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1580 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 19:30 , Processed in 0.665911 second(s), Total 54, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191