完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
哦,就是实验3,串口实验,还有些不懂诶
|
|
|
|
|
|
我VB发送1、2、3等数值单片机分别发送通道1、2、3等的数据,这些如何搞?还有0x0d,0x40这种是什么意思?
|
|
|
|
|
|
你问题描述不清楚...
|
|
|
|
|
|
我的代码需要加入回车才能返回的.
|
|
|
|
|
|
就是现在我的单片机是就如下发送。而VB是发送1、2、3、4等数值请求,要单片机再分别返回8通道的数值。
现在这样就是没有应答请求,直接每隔半秒发送,使得我的VB显示很乱。 printf(" AD value1 = %4.2fV rn", AD_value1); delay_ms(500); printf(" AD value2 = %4.2fV rn", AD_value2); delay_ms(500); printf(" AD value3 = %4.2fV rn", AD_value3); delay_ms(500); printf(" AD value4 = %4.2fV rn", AD_value4); delay_ms(500); printf(" AD value5 = %4.2fV rn", AD_value5); delay_ms(500); printf(" AD value6 = %4.2fV rn", AD_value6); delay_ms(500); printf(" AD value7 = %4.2fV rn", AD_value7); delay_ms(500); printf(" AD value8 = %4.2fV rn", AD_value8); |
|
|
|
|
|
就是现在我的单片机是就如下发送。而VB是发送1、2、3、4等数值请求,要单片机再分别返回8通道的数值。 现在这样就是没有应答请求,直接每隔半秒发送,使得我的VB显示很乱。 printf(" AD value1 = %4.2fV rn", AD_value1); delay_ms(500); printf(" AD value2 = %4.2fV rn", AD_value2); delay_ms(500); printf(" AD value3 = %4.2fV rn", AD_value3); delay_ms(500); printf(" AD value4 = %4.2fV rn", AD_value4); delay_ms(500); printf(" AD value5 = %4.2fV rn", AD_value5); delay_ms(500); printf(" AD value6 =
...... --------------------------------- 你把原子哥的串口通讯理解清楚了,你的问题就解决了,我就是这么过来的,呵呵 通讯协议可以自己定义 |
|
|
|
|
|
0x0d 这个就是定义回车吗
|
|
|
|
|
|
注释有说:回车=0X0D+0X0A
|
|
|
|
|
|
原子哥,我现在已经可以串口助手发送1,单片机返回1通道数据;程序如下。但是发送一次它只返回一个数据,咋么写它才会当串口助手发送1时,它不停的发送1通道的数据;当串口助手发送2时,它不停的发送2通道的数据
u8 RX_status; if(USART_GetITStatus(USART1, USART_IT_RXNE)) { RX_status = (USART_ReceiveData(USART1)); if(RX_status =='1') { printf(" %4.2fV rn", AD_value1); } if(RX_status =='2') { printf(" %4.2fV rn", AD_value2); } if(RX_status =='3') {printf(" %4.2fV rn", AD_value3); } if(RX_status =='4') { printf(" %4.2fV rn", AD_value4); } if(RX_status =='5') { printf(" %4.2fV rn", AD_value5); } if(RX_status =='6') { printf(" %4.2fV rn", AD_value6); } if(RX_status =='7') { printf(" %4.2fV rn", AD_value7); } if(RX_status =='8') { printf(" %4.2fV rn", AD_value8); } USART_ClearITPendingBit(USART1, USART_IT_RXNE); } |
|
|
|
|
|
不停发,就得发死循环中。
|
|
|
|
|
|
|
|
|
|
|
|
你用状态判断,判断完发一次,然后清状态了。
在串口中断设置一个标志,接收到1,然后标志置1. 在主循环中判断标志为1,不停发就可以了。 1, bool CommRecFlag =0; 2,中断接收成功 CommRecFlag =1; 3,在main while(1) { if(CommRecFlag ==1) { printf(" %4.2fV rn", AD_value1); } } |
|
|
|
|
|
|
|
|
|
|
|
这个已经在while(1)中了
|
|
|
|
|
|
这个已经在while(1)中了啊
|
|
|
|
|
|
看12楼
|
|
|
|
|
|
那这8个是否要标志8个
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4138 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3228 浏览 1 评论
2752 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2181 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14980 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3086浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1896浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2066浏览 3评论
1979浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2168浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 11:11 , Processed in 1.202060 second(s), Total 104, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4576