野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13861|回复: 2

串口保存数据的程序对吗

[复制链接]
发表于 2015-12-8 15:29:39 | 显示全部楼层 |阅读模式
本帖最后由 z3451065 于 2015-12-8 15:31 编辑
  1. void USART1_IRQHandler(void)
  2. {
  3.         //uint8_t ch;
  4.         USART_ClearITPendingBit(USART1,USART_IT_RXNE);
  5.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  6.         {         
  7.             //ch = USART1->DR;
  8.                          chi[i]= USART_ReceiveData(USART1);//将信号存入数组,上限是1-8.共8个
  9.         //        printf("%c", ch[id]);
  10.                   i++;
  11.                 if(i=='9')
  12.                         i='1';
  13.                         
  14.          //         printf( "%c", ch );    //将接受到的数据直接返回打印
  15.         }
  16.          
  17. }
复制代码
上面这是我的串口中断我在main.c中定义了char chi[];

然后我在#include "stm32f10x_it.c"中,定义了extern char chi[];    u8 i;
那么我在main函数中调用chi是不是就能获得保存的8个字符了吗?
为什么我实验一直不成功啊?


回复

使用道具 举报

发表于 2015-12-8 18:04:55 | 显示全部楼层
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
逻辑有问题,标志位都给你清掉了,不可能进入if语句里边了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-8 18:37:36 | 显示全部楼层
亽亼 发表于 2015-12-8 18:04
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESE ...

就是最后在清楚标志位,是这样吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-11 05:13 , Processed in 0.027683 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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