OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4369|回复: 11

为什么数组里面发两个十六进制数可以通过串口调试助手正常返回 当发送三个就不行 只能返回第三个

[复制链接]

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
发表于 2015-6-12 00:31:06 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void TIM3_IRQHandler(void) { u8 buff[]={0x01,0X05,0x07}; if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) { int i; TIM_ClearITPendingBit(TIM3, TIM_IT_Update); LED1=!LED1; for(i=0;i<3;i++) { USART_GetFlagStatus(USART2,USART_FLAG_TC); USART_SendData(USART1,buff[t++]); // delay_ms(1); while(USART_GetITStatus(USART1, USART_FLAG_TC) != RESET); //USART_ClearFlag(USART1,USART_FLAG_TC); } t=0; } }[/mw_shl_code]
这样的话串口调试助手只返回07 如果给07去了 可以正常返回01 05

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-3-9
在线时间
9 小时
发表于 2015-6-12 00:38:09 | 显示全部楼层
试一下把这个:TIM_ClearITPendingBit(TIM3, TIM_IT_Update);放到最后
来来,我是一个白菜,菜菜菜。。。。。
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-6-12 01:18:29 | 显示全部楼层
回复【2楼】tuy0326:
---------------------------------
但这样 最后一个字节丢失 也就是07没有了
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-6-12 01:22:50 | 显示全部楼层
回复【3楼】wenwu1109:
---------------------------------
回复【2楼】tuy0326:
---------------------------------
还是只能显示最后一个字节 不知道什么原因 如果延时1ms以上 就好了
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-6-12 01:23:04 | 显示全部楼层
回复【2楼】tuy0326:
---------------------------------
还是只能显示最后一个字节 不知道什么原因 如果延时1ms以上 就好了
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-6-12 08:55:08 | 显示全部楼层
USART_GetFlagStatus(USART2,USART_FLAG_TC);         <<<<<????
11
                  USART_SendData(USART1,buff[t++]);
12
          //  delay_ms(1);     
13
         while(USART_GetITStatus(USART1, USART_FLAG_TC) != RESET); 

用UASRT1 然後跑去判斷 USART2的旗標???
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12062
金钱
12062
注册时间
2013-3-8
在线时间
1283 小时
发表于 2015-6-12 09:05:32 | 显示全部楼层
回复【3楼】wenwu1109:
---------------------------------
while (USART_GetFlagStatus(com.Param.pUSART, USART_FLAG_TC) == RESET)
  {
   j--;
if(j==1)
 break;
  }
USART_SendData(com.Param.pUSART,TxBuffer);
用这种格试改一下
uint8_t sendstr(COM_TYPE com,volatile uint8_t *TxBuffer,uint8_t num)
{
  uint8_t i; 
  uint32_t j=10000000;
for(i=0;i<num;i++)
{
j=10000000;

while (USART_GetFlagStatus(com.Param.pUSART,USART_FLAG_TC) == RESET)
{
j--;
if(j==1)
 break;
}
USART_SendData(com.Param.pUSART,TxBuffer); 
}
return TRUE;
}>
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-6-12 11:47:08 | 显示全部楼层
回复【7楼】augustedward:
---------------------------------
这不是c语言吧
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12062
金钱
12062
注册时间
2013-3-8
在线时间
1283 小时
发表于 2015-6-12 14:16:09 | 显示全部楼层
回复【8楼】wenwu1109:
---------------------------------
怎么不是C语言?哪不像C?只是复制时有些地方会有点变化。
回复

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-3-9
在线时间
9 小时
发表于 2015-6-12 15:08:53 | 显示全部楼层
嗯,你应该听听那个台湾老兄的话,旗标(标志)判断错了.
来来,我是一个白菜,菜菜菜。。。。。
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-6-12 19:04:37 | 显示全部楼层
回复【10楼】tuy0326:
---------------------------------
改了 还不行
回复

使用道具 举报

3

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-5-29
在线时间
0 小时
发表于 2015-6-12 21:41:12 | 显示全部楼层
USART_GetFlagStatus(USART2,USART_FLAG_TC);  
USART_GetITStatus(USART1, USART_FLAG_TC) ;
这两个函数去看一下,人家的参数可不是这样写的

for(i=0;i<3;i++) 
 {   
 while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);           
 USART_SendData(USART1,buff[t++]); 
 }
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 07:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表