野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12258|回复: 13

火哥,关于串口的问题,scanf好像不能用,还有个问题

[复制链接]
发表于 2016-10-8 00:08:11 | 显示全部楼层 |阅读模式
我写了个简单的scanf函数
int a;
scanf("%d",&a);
printf("接收的数据:%c",a);

但是出现了这个报错:
Error: L6915E: Library reports error: __use_no_semihosting was requested, but a semihosting fgetc was linked in Finished: 0 information, 0 warning and 1 error messages.
火哥,,看到求解答一下。

还有另外一个问题,您写的串口中断函数是
// 串口中断服务函数
void DEBUG_USART_IRQHandler(void)
{
  uint8_t ucTemp;
        if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
        {               
        ucTemp = USART_ReceiveData(DEBUG_USARTx);
        USART_SendData(DEBUG_USARTx,ucTemp);   
        }         
}

就是我想在有串口接收中断的时候,只接收,然后把数据存在ucTemp中,
然后在主程序中来发送:USART_SendData(DEBUG_USARTx,ucTemp);
我声明了一个全局变量:extern  uint8_t ucTemp;但最后编译一直报错。
Error: L6200E: Symbol ucTemp multiply defined (by bsp_usart.o and main.o).







回复

使用道具 举报

发表于 2016-10-8 08:44:07 | 显示全部楼层
1-重定向了没有
2-选择了微库了没
回复 支持 反对

使用道具 举报

发表于 2016-10-8 08:58:53 | 显示全部楼层
应该是没有重新定义吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 09:58:05 | 显示全部楼层
fire 发表于 2016-10-8 08:44
1-重定向了没有
2-选择了微库了没

是在你写的USART1控制RGB彩灯上面用的scanf函数,,都做了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 10:07:02 | 显示全部楼层
fire 发表于 2016-10-8 08:44
1-重定向了没有
2-选择了微库了没

找到问题了,,重定向哪里不知道怎么被我删了啥,,重定向就好了
回复 支持 反对

使用道具 举报

发表于 2016-10-8 10:07:26 | 显示全部楼层
wh0522 发表于 2016-10-8 09:58
是在你写的USART1控制RGB彩灯上面用的scanf函数,,都做了

scanf接收的时候最后一个必须是空格,如果没有,那将接收不到。
回复 支持 反对

使用道具 举报

发表于 2016-10-8 10:07:54 | 显示全部楼层
wh0522 发表于 2016-10-8 10:07
找到问题了,,重定向哪里不知道怎么被我删了啥,,重定向就好了

真牛逼                        
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 10:44:52 | 显示全部楼层

估计手抖了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 10:48:35 | 显示全部楼层

火哥,  我想在接收中断里面只接收,,存到ucTemp里,不回显,然后再main里面调用
串口发送:USART_SendData(DEBUG_USARTx,ucTemp);老师接收不到数据,,是为啥啊。   
  uint8_t ucTemp;
        if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
        {               
        ucTemp = USART_ReceiveData(DEBUG_USARTx);
    //    USART_SendData(DEBUG_USARTx,ucTemp);   
        }
回复 支持 反对

使用道具 举报

发表于 2016-10-8 11:13:17 | 显示全部楼层
wh0522 发表于 2016-10-8 10:48
火哥,  我想在接收中断里面只接收,,存到ucTemp里,不回显,然后再main里面调用
串口发送:USART_Send ...

ucTemp 定义 为 全局变量
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 11:18:03 | 显示全部楼层

发现不是没有接收到数据,,而是要点很多次发送才会有数据接收到,,不过接收到的是一位一位的,,我发送的是一串数字,,但接收到的是一个数字
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 11:18:33 | 显示全部楼层
fire 发表于 2016-10-8 11:13
ucTemp 定义 为 全局变量

定义了呢,,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 11:22:51 | 显示全部楼层
fire 发表于 2016-10-8 11:13
ucTemp 定义 为 全局变量

主程序:
int main(void)
{       
  /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
  USART_Config();
        /* 发送一个字符串 */
        Usart_SendString( DEBUG_USARTx,"这是一个串口中断接收回显实验\n");
  while(1)
        {       
                        if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
                {               
                //ucTemp = USART_ReceiveData(DEBUG_USARTx);
                  USART_SendData(DEBUG_USARTx,ucTemp);   
                }
        }       
}
C:\Users\Y_Y\Desktop\BPN8E%5BMW0.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-8 11:24:00 | 显示全部楼层
BPN8E[MW0.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-1 07:03 , Processed in 0.032317 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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