5192|10

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32 串口3 为什么每次只能收到4个字节?谁有例程发我一份?我用的红牛板。 [复制链接]


复制代码
stm32 串口3 为什么每次只能收到4个字节?(要求收8个)为什么?或者谁有例程发我一份?我用的红牛板。
此帖出自stm32/stm8论坛

最新回复

LCD_ShowNum(105,60,hh[0],3); 注释掉,串口发送也别在中断里发了。 初始化,不要使能发送中断。 hh[0] = USART_ReceiveData(USART3);改了 hh[count++] 变成 这样 。   hh[1]=hh[0]+1;   也注释了。  详情 回复 发表于 2016-1-1 21:53
点赞 关注
 

回复
举报

483

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
你用的标准库还是HAL库啊?

此帖出自stm32/stm8论坛
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
不太清楚,本人小白,刚接触stm32,在开发板上自带的例程上改的
此帖出自stm32/stm8论坛
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

4
 
你好好看看程序,是不是哪里限制串口3接收字节的长度,是不是有哪个变量在做鬼
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 
大神,能不能留个联系方式,我给你发过去帮我看看?
此帖出自stm32/stm8论坛
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

6
 
例程本身就应该可以接收啊。主要就是中断接收函数部分。把数组存入数组,计数器加一。数组稍微大一点。主程序判断,打印信息。就这个思路就行。
此帖出自stm32/stm8论坛
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

7
 
1、你是单字节发送吗?
2、你的buffer多大?
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

8
 
ienglgge 发表于 2015-12-30 21:30
例程本身就应该可以接收啊。主要就是中断接收函数部分。把数组存入数组,计数器加一。数组稍微大一点。主程 ...
  1. void USART3_IRQHandler(void)
  2. {
  3.         if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)
  4.         {
  5.                 USART_ClearITPendingBit(USART3,USART_IT_RXNE);
  6.                 hh[0] = USART_ReceiveData(USART3);
  7.                 LCD_ShowNum(105,60,hh[0],3);
  8.                 if(USART_ReceiveData(USART3)==0x08)
  9.                 flag++;                        
  10.                 hh[1]=hh[0]+1;                               
  11.                 USART_ITConfig(USART3, USART_IT_RXNE, DISABLE);               
  12.                 Delay2(1);
  13.         }
  14.         if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
  15.         {
  16.                 USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  17.                 GPIO_ResetBits(GPIOF, GPIO_Pin_11);

  18.                 Delay2(1);
  19.         }
  20. }
复制代码


这是例程里的中断服务函数,只能接受单字节,要怎么改改才能接受多字节呢?我改了改没改成功,您能具体说说吗?
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

9
 
ienglgge 发表于 2015-12-30 21:30
例程本身就应该可以接收啊。主要就是中断接收函数部分。把数组存入数组,计数器加一。数组稍微大一点。主程 ...
  1. void USART3_IRQHandler(void)
  2. {
  3.         if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)
  4.         {
  5.                 USART_ClearITPendingBit(USART3,USART_IT_RXNE);
  6.                 hh[0] = USART_ReceiveData(USART3);
  7.                 LCD_ShowNum(105,60,hh[0],3);
  8.                 if(USART_ReceiveData(USART3)==0x08)
  9.                 flag++;                        
  10.                 hh[1]=hh[0]+1;                               
  11.                 USART_ITConfig(USART3, USART_IT_RXNE, DISABLE);               
  12.                 Delay2(1);
  13.         }
  14.         if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
  15.         {
  16.                 USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  17.                 GPIO_ResetBits(GPIOF, GPIO_Pin_11);

  18.                 Delay2(1);
  19.         }
  20. }
复制代码


这是例程里的中断服务函数,只能接受单字节,要怎么改改才能接受多字节呢?我改了改没改成功,您能具体说说吗?
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

10
 
suoma 发表于 2015-12-30 22:52
1、你是单字节发送吗?
2、你的buffer多大?

发送没问题,但是接受只能最多接收4个字节,我是用串口助手发的,buffer是64字节
此帖出自stm32/stm8论坛
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

11
 
LCD_ShowNum(105,60,hh[0],3); 注释掉,串口发送也别在中断里发了。
初始化,不要使能发送中断。
hh[0] = USART_ReceiveData(USART3);改了
hh[count++] 变成 这样 。  

hh[1]=hh[0]+1;   也注释了。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表