OpenEdv-开源电子网

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

USART2接收数据进行协议判断,接收中断里面有问题搞不清楚,求解答

[复制链接]

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2015-5-13
在线时间
18 小时
发表于 2015-6-8 14:13:39 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]我通过串口调试助手发送5A A5 04 80 03 00 03,但是只是LED1闪了一下,蜂鸣器一直亮着,我想问题是在下面的中断里,但不知道错在哪里?[/mw_shl_code] [mw_shl_code=c,true]void USART2_IRQHandler(void) { u8 res; if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//?????????? { res=USART_ReceiveData(USART2); //????????????????×??????? if(USART2_RX_STA<USART2_MAX_RECV_LEN) //????200×????????????????? { TIM_SetCounter(TIM4,0);//?????÷???? TIM4_Set(1); //?????¨?±?÷4?????? if(RXAAOK) { USART2_RX_BUF[RXP]=res; RXP++; //????????????1 LED1 = !LED1; USART2_RX_STA++; } if(!RXAAOK&&(res==0x5A)) //???????·5a { RXAAOK=1; RXP=0; BEEP = !BEEP; USART2_RX_STA++; } } else { USART2_RX_STA|=1<<15; //????±ê???????ê?? } } } [/mw_shl_code]
主函数如下
int main(void)
 {
u8 change_picture_3[7] = {0x5A,0XA5,0X04,0X80,0X03,0X00,0X03};  
u8 t=0;
u8 len;
u8 flag_start=0;
delay_init();     //???±??????????
  NVIC_Configuration();  
USART2_Init(9600); //???????®??2??:9600
  Led_Init();     //LED??????????
BEEP_Init();
for(t=0;t<sizeof(change_picture_3);t++)//sizeof(change_picture_3)=7
{
USART_SendData(USART2, change_picture_3[t]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á??
}
  while(1)
{
if(USART2_RX_STA&0x8000)
{
flag_start = 0;      
len=USART2_RX_STA&0x3fff;//?????????????????????¤??
if(USART2_RX_BUF[0]==0x5A)
{
             flag_start = 1; LED0=!LED0;
    BEEP = !BEEP;
    len = len-2;
    if(len == USART2_RX_BUF[2]+1)  //len = 5
for(t=0;t<len;t++)
{
USART_SendData(USART2, USART2_RX_BUF[t+2]);//?ò?®??2·???????
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á??
}
 }
USART2_RX_STA=0;
    }  
   }
 

 

最佳答案

查看完整内容[请看2#楼]

回复【2楼】学习stm32加油: --------------------------------- USART_SendData(USART2, change_picture_3[t]); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á?? 将这一句改成 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á?? USART_SendData(USART2, change_picture_3[t]); 能解决你"还有一个问题就是我上来发送0x5A,0XA5,0X04,0X80,0X03,0X00,0X03只是在PC上返回 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2015-6-8 14:13:40 | 显示全部楼层
回复【2楼】学习stm32加油:
---------------------------------
USART_SendData(USART2, change_picture_3[t]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á??
将这一句改成

while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//????·????á??
USART_SendData(USART2, change_picture_3[t]);
能解决你"还有一个问题就是我上来发送0x5A,0XA5,0X04,0X80,0X03,0X00,0X03只是在PC上返回了0XA5,0X04,0X80,0X03,0X00,0X03这是为什么"的问题
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2015-5-13
在线时间
18 小时
 楼主| 发表于 2015-6-8 14:15:11 | 显示全部楼层
还有一个问题就是我上来发送0x5A,0XA5,0X04,0X80,0X03,0X00,0X03只是在PC上返回了0XA5,0X04,0X80,0X03,0X00,0X03这是为什么
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2015-5-13
在线时间
18 小时
 楼主| 发表于 2015-6-8 15:03:48 | 显示全部楼层
回复【3楼】wang12zhe:
---------------------------------
谢谢解决这个问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 11:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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