完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我目前正在使用STM8S003F3进行工作,我想使用UART RS485将一个字节数组发送到我的PC上的HTERM。但我总是错过数组中的最后一个字节(我无法看到HTERM中的最后一个字节)。这是一个镜头代码片段:
_UART_TX_ON; //切换到UART485传输模式 for(bn = 0; bn&lt; 17; bn ++){ UART1-&gt; DR = bSPIRxBuf [bn]; // UART1_SendData8(bSPIRxBuf [BN]); while((UART1-> SR&amp; 0x80)== 0x00); // while(UART1_GetFlagStatus(UART1_FLAG_TXE)== RESET); } _UART_RX_ON; //切换到UART485接收模式阵列已经有一些预定义的内容。但是在Hterm中我只能观察到16个字节,这意味着HTERM始终不会接收到最后一个字节。我不知道为什么也无法解释。我认为在使用该功能切换到接收模式之前,我已经等待了足够的时间用于每个发送字节。有人有想法吗?非常感谢! 问候, 博 #stm8s003f3 以上来自于谷歌翻译 以下为原文 Hi all, I am using currently STM8S003F3 for my work and I want to send an array of bytes to the HTERM on my PC using UART RS485. But I always miss the last byte in the array (I can't see the last byte in HTERM). Here is a shot code snippet: _UART_TX_ON; //switch to UART485 transmission mode for ( bn=0; bn<17; bn++) { UART1->DR = bSPIRxBuf[bn]; //UART1_SendData8(bSPIRxBuf[bn]); while ( (UART1->SR & 0x80) == 0x00); //while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET); } _UART_RX_ON; //switch to UART485 reception modeThe array has already some predefined content. But in Hterm I can only observe 16 bytes, which means the last byte is always not received by HTERM. I don't know why and could not explain. I think that I have waited enough time for each transmit byte before switching to reception mode using the function. Anyone has some ideas? Many thanks! Regards, Bo #stm8s003f3 |
|
相关推荐
2个回答
|
|
当第一位击中导线时,TXE不会标记?你有TC(传输完成)吗?那将是一个更好的测试最后一位何时离开。
以上来自于谷歌翻译 以下为原文 Doesn't TXE flag when the first bit hits the wire? Do you have TC (Transmit Complete) ? That would be a better to test as to when the last bit has left. |
|
|
|
我在while循环中使用TXE标志进行检查。但我没有使用TC标志。
实际上这个代码适用于RS232,其中 _UART_TX_ON 和_UART_RX_ON 因为RS232的全双工而没有必要。我还尝试在for循环之后和之前添加延迟功能 _UART_RX_ON 这没有用。 以上来自于谷歌翻译 以下为原文 I used the TXE flag in the while loop for the check. But I didn't use the TC flag. Actually this code works fine with RS232, where _UART_TX_ON and _UART_RX_ON are not necessary due to full duplex of RS232.I've also tried to add a delay function after the for loop and before _UART_RX_ON and this does not help. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2623 浏览 1 评论
3206 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1779 浏览 1 评论
3605 浏览 6 评论
5984 浏览 21 评论
934浏览 4评论
1311浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
579浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1299浏览 3评论
1353浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 23:26 , Processed in 1.209960 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号