打印

串口发送数据可以发送常量?

[复制链接]
1143|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leizhanzhi|  楼主 | 2020-8-24 13:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在串口中断服务函数中,开启了接受中断,当串口接受到一个数据时,两个LED灯电平跳变,输出常量,但是串口接受到数据后,不能输出常量,用串口调试助手查看,没有任何数据,但是单片机在不停的发送空格,LED灯也不能轮流跳变,请问是什么问题,该怎么解决?
void USART1_IRQHandler()
{
        //u8 res;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
        {
                  //res= USART_ReceiveData(USART1);
      USART_SendData(USART1,0x01);
                        if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5)==Bit_SET)
                        {
                                GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                        }
                        else
                                GPIO_SetBits(GPIOB,GPIO_Pin_5);
                        if(GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_5)==Bit_SET)
                        {
                                GPIO_ResetBits(GPIOE,GPIO_Pin_5);
                        }
                        else
                                GPIO_SetBits(GPIOE,GPIO_Pin_5);
                       
        }
}

使用特权

评论回复

相关帖子

沙发
sonicll| | 2020-8-24 14:19 | 只看该作者
串口助手用16进制显示看看有数据吗,你说的单片机不停的发空格,可能就是发的0x01,0x01没有对应的ASCII码字符,所以显示出来跟空格差不多。
你这段程序检查接收中断后,没有读取接收数据,也没有清除接收中断标志,程序估计会不停的进中断函数无法跳出,这样LED灯的GPIO管脚变化太快,人眼无法感知

使用特权

评论回复
板凳
xyz549040622| | 2020-8-24 14:37 | 只看该作者
回复同楼上的,还有补充一点,需要注意,当不一定你错了,你的IO即做输出,又做输入,初始化配置为什么状态呢?

使用特权

评论回复
地板
xyz549040622| | 2020-8-24 14:37 | 只看该作者
回复同楼上的,还有补充一点,需要注意,当不一定你错了,你的IO即做输出,又做输入,初始化配置为什么状态呢?

使用特权

评论回复
5
xyz549040622| | 2020-8-24 14:37 | 只看该作者
回复同楼上的,还有补充一点,需要注意,当不一定你错了,你的IO即做输出,又做输入,初始化配置为什么状态呢?

使用特权

评论回复
6
xyz549040622| | 2020-8-24 14:37 | 只看该作者
该说的楼上都说了,还有补充一点,需要注意,当不一定你错了,你的IO即做输出,又做输入,初始化配置为什么状态呢?

使用特权

评论回复
7
xyz549040622| | 2020-8-24 14:38 | 只看该作者
该说的楼上都说了,还有补充一点,需要注意,当不一定你错了,你的IO即做输出,又做输入,初始化配置为什么状态呢?

使用特权

评论回复
8
ningling_21| | 2020-8-25 17:47 | 只看该作者
发送常量肯定没问题,可以改一下不在中断中发送数据试试

使用特权

评论回复
9
梦幻泡影| | 2020-8-26 08:50 | 只看该作者
解决方法:
1、把函数中被注释掉的那两句重新用起来; 理由:进入接收中断后必须手动清除中断标志,而接收数据是可以清除接收中断标志的。
2、把发送函数里面的0x01换成0x31。          理由:0x31换成ASCII就是1,此时无论你的串口助手显示的是hex还是ASCII,都能看到东西只,要你波特率没搞错。

当然了,完成第一步,你就能看到灯闪了,之所以改第二步,是为了保险地让你看到数据

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

18

帖子

0

粉丝